ส่วนขยายของการดักจับ SQL


20

ตามImmermanคลาสความซับซ้อนที่เกี่ยวข้องกับการสืบค้นSQLนั้นเป็นคลาสของการสืบค้นที่ปลอดภัยใน (แบบสอบถามที่มีคำสั่งซื้อครั้งแรก (กล่าวอีกนัยหนึ่งแบบสอบถาม SQL ทั้งหมดมีความซับซ้อนในและปัญหาทั้งหมดในสามารถแสดงเป็นแบบสอบถาม SQL ได้)Q(FO(Oยูยังไม่มีข้อความT))Q(FO(Oยูยังไม่มีข้อความT))Q(FO(Oยูยังไม่มีข้อความT))

จากผลลัพธ์นี้จากมุมมองทางทฤษฎีมีปัญหาที่น่าสนใจมากมายที่สามารถแก้ไขได้อย่างมีประสิทธิภาพ แต่ไม่สามารถแสดงออกได้ใน SQL ดังนั้นส่วนเสริมของ SQL ที่ยังคงมีประสิทธิภาพน่าสนใจ ดังนั้นนี่คือคำถามของฉัน:

มีส่วนขยายของ SQL (ถูกนำไปใช้และใช้ในอุตสาหกรรม ) หรือไม่ซึ่งรวบรวมP (เช่นสามารถแสดงข้อความค้นหาที่คำนวณได้แบบพหุนามทั้งหมดและไม่มีผู้อื่น)?

ฉันต้องการภาษาสืบค้นฐานข้อมูลที่มีเงื่อนไขทั้งสามข้อ มันเป็นเรื่องง่ายที่จะกำหนดส่วนขยายที่จะขยาย SQL และจะจับ{P} แต่คำถามของฉันคือถ้าภาษาดังกล่าวเหมาะสมจากมุมมองของภาคปฏิบัติดังนั้นฉันต้องการภาษาที่ใช้ในทางปฏิบัติ หากไม่ใช่กรณีนี้และไม่มีภาษาดังกล่าวฉันอยากทราบว่ามีเหตุผลที่ทำให้ภาษาดังกล่าวไม่น่าสนใจจากมุมมองเชิงปฏิบัติหรือไม่? ตัวอย่างเช่นคำถามที่เพิ่มขึ้นในทางปฏิบัติมักจะง่ายพอที่ไม่จำเป็นต้องใช้ภาษาดังกล่าวหรือไม่?P


1
@JD ขออภัยด้วยความคิดเห็นของคุณฉันคิดว่าคุณไม่เข้าใจคำถาม คำถามมีความชัดเจน การจับคลาสที่ซับซ้อนด้วยภาษาเป็นคำศัพท์มาตรฐาน (สิ่งที่ไม่ชัดเจนคือการตั้งค่าของฉันที่ภาษาควรเป็นภาษาแบบสอบถาม แต่นั่นเป็นเพียงการตั้งค่าและฉันได้บอกคุณว่าฉันจะดีกับคนที่ไม่ใช่ถ้าไม่มีคนที่ชอบนั้น)
Kaveh

1
@ Shog9 ฉันได้ตอบไปแล้ว JD ไม่เข้าใจคำถามเขาไม่รู้ด้วยซ้ำว่าการจับภาพหมายถึงอะไรและไม่ทราบว่าการจับภาพภาษา P ไม่สามารถทำให้ทัวริงสมบูรณ์โดยคำจำกัดความ เขาคาดหวังว่ามันจะได้รับการกล่าวถึงในแบบที่เขาชอบฉันได้กล่าวไว้ในคำศัพท์ที่ซับซ้อนเชิงพรรณนาและความซับซ้อนของภาษาคิวรีตามปกติและได้อธิบายสิ่งเหล่านี้ให้เขาฟังด้วย ที่นี่ไม่ชัดเจนอะไร
Kaveh

1
@ Shog9 แรงจูงใจมาจากพรรณนาความซับซ้อน ฉันพยายามดูว่ามีภาษาที่ขยาย SQL ที่ใช้ในอุตสาหกรรมที่รวบรวม P. ภาษา SQL ดั้งเดิมค่อนข้างอ่อนแอเมื่อแสดงผลลัพธ์ของ Immermann จากมุมมองทางทฤษฎีการคำนวณที่มีประสิทธิภาพจำนวนมากเป็นไปไม่ได้ที่จะระบุไว้ในนั้น ในทางกลับกันเราต้องการให้ภาษามีประสิทธิภาพ (เช่น ) มีภาษาแบบนี้มั้ย (ฉันคิดว่าสิ่งเหล่านี้อาจชัดเจนสำหรับคนที่คุ้นเคยกับความซับซ้อนเชิงพรรณนา) P
Kaveh

4
@ Shog9: ฉันล้มเหลวที่จะดูว่าทำไมคำถามนี้จึงต้องการการแทรกแซงจากผู้ดูแลและปิดตัวลง ฉันรู้สึกสบายใจกับ Descriptive Complexity ที่จะบอกว่านี่เป็นคำถามจริง (แม้ว่าอาจจะเหมาะกว่าสำหรับ TCS - เป็นคำถามที่ค่อนข้างยาก)
Alex สิบ Brink

1
ตามที่ฉันสังเกตเห็นคำถามอื่นก็ถูกปิดเช่นกัน (ซึ่งมีคะแนนโหวตใกล้เคียง) ฉันถามคำถามเกี่ยวกับเมตาเกี่ยวกับมัน: meta.cs.stackexchange.com/questions/97/…
Alex ten Brink

คำตอบ:


5

สำหรับคำถามหลักของคุณฉันขอแนะนำการสำรวจสั้น ๆนี้โดย Martin Grohe


คำถามที่จำเป็นในการปฏิบัติมักง่ายพอที่ไม่จำเป็นต้องใช้ภาษาที่แข็งแกร่งกว่านี้หรือไม่?

ฉันจะบอกว่านี่ใช้เวลาส่วนใหญ่เนื่องจากจำนวนส่วนขยายที่เพิ่มเข้ามาในภาษาคิวรีทั่วไป (การปิดสกรรมกริยาตัวดำเนินการทางคณิตศาสตร์การนับ ฯลฯ ) นี่มาจากมุมมองของใครบางคนที่ทำงานในฐานะนักพัฒนาอิสระของเว็บไซต์ที่ค่อนข้างง่ายและแอพพลิเคชั่นอื่น ๆ ดังนั้นฉันไม่แน่ใจเกี่ยวกับการใช้งานจริงของ SQL ในอุตสาหกรรมขนาดใหญ่ / ฐานข้อมูลขนาดใหญ่

ในบางกรณีอาจจำเป็นต้องใช้ภาษาที่มีประสิทธิภาพมากกว่านี้เดาของฉันคือผู้พัฒนาซอฟต์แวร์จะจัดการกับพวกเขาโดยใช้ภาษาที่พวกเขาเขียนแอปพลิเคชันไม่ใช่แบบสอบถาม (เช่น C ++ หรือ java)


3

อย่างแรกพลังการแสดงออกของ SQL นั้นชัดเจนน้อยกว่าที่คิดไว้ คุณลักษณะการรวมการจัดกลุ่มและการคำนวณทางคณิตศาสตร์ของ SQL นั้นมีผลกระทบเล็กน้อย ก่อนหน้านี้ดูเหมือนว่าเป็นไปได้โดยการเข้ารหัสของผู้ประกอบการพีชคณิตโดยใช้คุณสมบัติเหล่านี้บางคนจริง ๆ แล้วสามารถแสดงความสามารถในการเข้าถึงใน SQL ปรากฎว่านี่ไม่ใช่กรณีของSQL-92ซึ่งก็คือ "local"

ซึ่งหมายความว่าจำเป็นต้องมีส่วนขยายสำหรับ SQL-92 ในการจับ PTIME และอีกอันที่อนุญาตให้ภาษาที่เป็นผลลัพธ์เป็น "non-local"

อย่างไรก็ตามการอนุญาตโครงสร้างที่ได้รับคำสั่งและด้วยเลขคณิต จำกัด ที่เหมือนจริงการพิสูจน์ว่า SQL-92 ไม่สามารถแสดงความสามารถในการเข้าถึงได้นั้นแปลว่าที่เหมือนกันและมีแนวโน้มว่าจะค่อนข้างยาก (มันอาจจะเป็นที่ถกเถียงกันอยู่ว่าการจัดเรียงเชิงเส้นตามธรรมชาตินั้นมีอยู่เสมอในประเภทข้อมูลใน SQL-92 และดังนั้นจึงสามารถสันนิษฐานได้ว่ามีการสั่งซื้อโครงสร้างพื้นฐาน)TC0NLOGSPACE

จากนั้นภูมิทัศน์เปลี่ยนไปอีกครั้งเนื่องจาก SQL: 1999 (SQL3) รวมการเรียกซ้ำ ดังนั้น SQL: 1999 ดูเหมือนว่าอย่างน้อยที่สุดจะแสดงออกได้ว่าเป็นตรรกะจุดคงที่ที่มีการนับ (แม้ว่าฉันคิดว่ารายละเอียดอาจจะค่อนข้างยุ่งยากอีกครั้งรวมถึงปัญหาของการสั่งซื้อ) ไม่ว่าการสร้างใหม่จะทำให้ตรรกะมีความหมายมากกว่าที่จำเป็นในการจับภาพ PTIME หรือไม่ฉันไม่รู้และจำเป็นต้องมีการศึกษาบางอย่างเพื่อสร้างสิ่งนี้ ในระหว่างนี้มีการแก้ไขเพิ่มเติมในปี 2546 , 2549 , 2551และ2554(เป็นเอกสาร ISO มีเพียงฉบับร่างเท่านั้นที่สามารถใช้ได้อย่างอิสระ) การแก้ไขเหล่านี้ได้เพิ่มฟีเจอร์ใหม่ทั้งหมดรวมถึงการอนุญาตให้ XQuery เป็น "ส่วน" ของการสืบค้น SQL ฉันเดาว่า "SQL" ตอนนี้มีความหมายมากกว่าที่จะจับ PTIME แต่การเข้ารหัสที่จำเป็นต้องทำอาจจำเป็นต้องใช้แบบสอบถามที่มีขนาดใหญ่และค่อนข้างไม่เป็นธรรมชาติซึ่งอาจไม่ได้รับการสนับสนุนในระบบจริง

ดังนั้นฉันคิดว่ามีหลักฐานว่าไม่มีส่วนต่อขยายของ SQL ที่จับ PTIME ได้อย่างแม่นยำตอบคำถามของคุณอย่างคลุมเครือ กล่าวโดยสรุปส่วนขยายอุตสาหกรรมค่อนข้างมีพลังและอาจมี PTIME ที่เกินกำหนดแล้ว หากเป็นจริงที่ SQL: 1999 มีประสิทธิภาพเพียงพอที่จะจับอย่างน้อย PTIME แล้วก็ยังไม่ชัดเจนว่า "SQL" หมายถึงอะไรจริงๆในคำถามของคุณเนื่องจากจะต้องกำหนด "SQL" เพื่อหมายถึงรุ่นก่อนหน้าของ SQL: 1999

PNP


ขอบคุณAndrásโดยเฉพาะอย่างยิ่งสำหรับการกล่าวถึงว่า SQL3 รองรับ "การเรียกซ้ำ" ฉันต้องตรวจสอบและดูสิ่งที่เป็นที่รู้จัก :)
Kaveh

ป.ล. : ฉันเดาว่าคุณรวมการอภิปรายเรื่องความสัมพันธ์กับทฤษฎีความซับซ้อนและการจับตรรกะ P สำหรับผู้อ่านอย่างไรก็ตามให้ฉันเพิ่มเป็นหมายเหตุข้างและเพื่อชี้แจง: ฉันใช้ SQL ในแง่ที่ Immerman ใช้ในผลลัพธ์และที่ ผลการใช้คำจำกัดความที่แม่นยำของ SQL ฉันรู้เกี่ยวกับความสัมพันธ์ที่จะแยกระดับความซับซ้อนและคำถามของตรรกะจับ P แต่ผมไม่คิดว่าพวกเขามีผลกระทบต่อคำตอบของคำถามของฉัน
Kaveh

คำตอบสำหรับคำถามของฉันสามารถบวก (หรือลบ) และพวกเขาจะต้องสอดคล้องกับคำตอบที่เป็นไปได้ทั้งหมดไปที่ P เทียบกับ NP และการดำรงอยู่ของตรรกะการสั่งซื้อคงที่สำหรับพี
Kaveh

อย่างไรก็ตามถ้าคุณนิยาม SQL อย่างที่ Immerman ทำฉันก็คิดว่าคำตอบคือ "คงไม่" เพราะส่วนขยายอุตสาหกรรมที่มีอยู่นั้นดูเหมือนจะอ่อนแอเกินไปหรือมีพลังมากเกินไป แต่ (AFAIK) เราไม่มีข้อพิสูจน์ที่เข้มงวดสำหรับเรื่องนี้ อาจจะเป็นส่วนย่อยบางส่วนของส่วนขยายได้อย่างแม่นยำจับ PTIME แต่ผมไม่แน่ใจว่าผมต้องการที่จะอวนลากผ่านรายละเอียดที่พยายามที่จะแยกมัน ...
แอนดราสซาลามอน

-1

PPPPP

P=ยังไม่มีข้อความPP=ยังไม่มีข้อความPPPยังไม่มีข้อความP

Pยังไม่มีข้อความP

P=ยังไม่มีข้อความP

แม้ว่ามันอาจจะไม่ได้มีอยู่เพื่อจุดประสงค์ที่แท้จริง แต่ก็มีอยู่จริงและสามารถสร้างขึ้นได้และนำไปปฏิบัติได้ คุณสามารถกำหนดภาษานั้นด้วยสิ่งที่สามารถจำลองทัวริงเครื่องจนถึงจำนวนขั้นตอนที่กำหนด IE สามารถแก้ไขปัญหาP-Completeได้ อย่างไรก็ตามหากคุณสร้างสิ่งนี้มันเกือบจะเป็นทัวริงที่สมบูรณ์ยกเว้นข้อ จำกัด "ที่กำหนดจำนวนขั้นตอน" ที่ไม่เป็นเอกภาพซึ่งในภาษาที่คล้ายกับ SQL จะเป็นวิธีที่แปลกมากในการ จำกัด การสืบค้นที่ปลอดภัยเท่านั้น คุณสามารถทำสิ่งนี้ได้หากขั้นตอนเป็นบันทึกของบางตาราง แต่สิ่งนี้ก็ดูไม่คุ้มค่าสำหรับการใช้งานจริง


2
FOA0

1
ยังไม่มีข้อความPPPFO(LFP)P
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.