ภาษาคิวรี่ฐานข้อมูลสำหรับเคียวรีที่มีประสิทธิภาพ


9

ดูเหมือนว่าในภาษาคิวรีที่เป็นที่นิยมสำหรับฐานข้อมูลเชิงสัมพันธ์มันเป็นไปได้ที่จะสร้างแบบสอบถามที่ต้องใช้ทรัพยากรจำนวนมากในการตอบ ในทางปฏิบัติผู้ดูแลฐานข้อมูลจะจัดการสิ่งนี้โดย จำกัด จำนวนหน่วยความจำต่อข้อความค้นหาและตรวจสอบข้อความค้นหาที่ทำงานเป็นเวลานานหากมีการชะลอตัวของฐานข้อมูล ดูเหมือนว่าจะเป็นการเฉพาะกิจมีวิธีแก้ปัญหานี้หรือไม่

มีภาษาของแบบสอบถามที่สามารถใช้แบบสอบถามที่มีประสิทธิภาพเท่านั้นหรือไม่

หากไม่มีภาษาดังกล่าวมีเหตุผลทางทฤษฎีสำหรับสิ่งนี้หรือไม่?

เหตุผลบางอย่างที่ทำให้ฉันคาดหวังว่าสิ่งต่าง ๆ เหล่านี้จะมีอยู่จริงหรืออย่างน้อยก็สมเหตุสมผล:

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

คำถามนี้ได้รับแรงบันดาลใจจากการตัดกันของคำถามสองข้อก่อนหน้านี้:

ภาษาโปรแกรมสำหรับการคำนวณที่มีประสิทธิภาพ

เพราะเหตุใดฐานข้อมูลเชิงสัมพันธ์จึงใช้งานได้ทั้งหมดเนื่องจากความซับซ้อนเชิงทฤษฎีของการหาคำตอบ (ในขนาดของแบบสอบถาม)


1
นี่ไม่ใช่หัวข้อของความซับซ้อนเชิงพรรณนาใช่ไหม พวกเขามีลักษณะภาษาของแบบสอบถามสำหรับชั้นเรียนที่ซับซ้อนต่างๆ
Kaveh

ความซับซ้อนเชิงพรรณนานั้นเป็นส่วนสำคัญและเป็นแนวทางในการเขียนโปรแกรมภาษาเพื่อการคำนวณที่มีประสิทธิภาพ แต่ฉันไม่คิดว่ามันง่ายเหมือนการพูดว่า "ความซับซ้อนเชิงพรรณนาใช้ตรรกะ" และ "แบบสอบถามไปยังฐานข้อมูลใช้ตรรกะ" โดยเฉพาะอย่างยิ่งสำหรับ DC ดูเหมือนว่าขนาดแบบสอบถามได้รับการแก้ไขและ 'n' มาจากขนาดของโครงสร้าง จำกัด ที่แบบสอบถามเหล่านั้นยอมรับ ในฐานข้อมูลขนาดจริงของแบบสอบถามที่เป็นตัวแปรและฐานข้อมูลเป็นตัวแปรหรืออาจเป็นพารามิเตอร์ถาวร
Artem Kaznatcheev

3
นอกจากนี้ยังมีผลลัพธ์สำหรับคิวรีแบบผันแปรพวกเขาไม่น่าประหลาดใจเท่าการจับคู่ระหว่างการตรวจสอบโมเดลและคลาสความซับซ้อนที่รู้จักกันดี นอกจากนี้ฟิลด์ที่กว้างขึ้นของทฤษฎีแบบ จำกัด ซึ่งมีความซับซ้อนเชิงพรรณนาเป็นส่วนหนึ่งมีจำนวนผลลัพธ์การแสดงออกที่เกี่ยวข้องโดยตรงกับฐานข้อมูล ฐานข้อมูลอยู่หลังจากโครงสร้างแบบจำลองเชิงทฤษฎีเกือบทั้งหมดที่แน่นอน
Marc Hamann

1
ฉันไม่ได้คิดถึงการติดต่อนี้ ฉันเพิ่มแท็กทฤษฎีโมเดล จำกัด หากคุณหรือ @Kaveh ต้องการอธิบายรายละเอียดเกี่ยวกับความคิดเห็นของคุณและรู้วิธีการใช้ผลลัพธ์เฉพาะจากความซับซ้อนเชิงพรรณนาของทฤษฎีแบบ จำกัด แน่นอนโดยทั่วไปในการสร้างภาษาแบบสอบถามดังกล่าวฉันอยากจะเห็นคำตอบนั้นจริง ๆ !
Artem Kaznatcheev

คำตอบ:


7

วิธีหนึ่งในการดูที่ภาษาคิวรีฐานข้อมูลคือผ่านเลนส์ของฐานข้อมูลแบบนิรนัยซึ่งมีเคียวรีแสดงเป็นโปรแกรมเชิงตรรกะ ในการตั้งค่านี้งานที่เกี่ยวข้องมากที่สุดที่เกี่ยวข้องกับคำถามของคุณคือ McAllester ในการวิเคราะห์ความซับซ้อนของการวิเคราะห์แบบคงที่ซึ่งสังเกตว่าคุณสามารถให้เหตุผลเกี่ยวกับเวลาทำงานของแบบสอบถามโดยใช้เหตุผลเกี่ยวกับจำนวน "คำนำหน้า firings" ในกฎของคุณ โปรแกรม. สิ่งที่ "คำนำหน้าการยิง" นั้นไม่ซับซ้อนอย่างมาก แต่ฉันจะแนะนำคุณไปที่กระดาษสำหรับสิ่งนั้น

ในโลกของการเขียนโปรแกรมเชิงหน้าที่สิ่งนี้เรียกว่าsemantics ราคา : มันไม่ได้หมายความว่าคุณสามารถใช้การสืบค้นที่มีประสิทธิภาพ (โปรแกรม) เท่านั้น แต่มันหมายความว่าคุณสามารถให้เหตุผลเกี่ยวกับความซับซ้อนเชิงเชิงซ้อนของโปรแกรมการประกาศของคุณได้อย่างสมเหตุสมผล .

บางคนทำงานเกี่ยวกับการนำความคิดของ McAllester ไปใช้รวมถึงกฎดาต้าดาต้าไปจนถึงโปรแกรมที่มีประสิทธิภาพพร้อมการรับประกันเวลาและพื้นที่ (Liu and Stoller) และDedalus: Datalog ในเวลาและอวกาศ (Alvaro, Marczak, Conway, Hellerstein, Maier และ Sears) ฉันยอมรับว่าฉันยังไม่ได้อ่านหลังของทั้งสองเอกสารอย่างไรก็ตาม

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