ใน Google App Engine รูปแบบการเข้าร่วมแบบกลุ่มต่อกลุ่มที่มีประสิทธิภาพมากที่สุดคืออะไร


9

การออกแบบBigTable นั้นปฏิเสธปรัชญาหลายประการของโมเดลเชิงสัมพันธ์มาตรฐานซึ่งเลือกที่จะทำให้ denormalization เป็นโฮสต์ขนาดใหญ่ของโต๊ะตัวเล็ก ๆ อย่างชัดเจน

หนึ่งในพื้นที่ที่มีขนาดใหญ่กว่าซึ่งปัญหานี้อยู่ในการสร้างแบบจำลองของหลายคนเข้าร่วมจำนวนมาก

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

เนื่องจากการเชื่อมโยงเป็นไปไม่ได้จึงเป็นไปได้ที่จะเชื่อมโยงตารางผ่าน RelationshipProperties ดังนั้นด้วยความพยายามที่เพียงพอตารางจุดตัดมาตรฐาน (ตารางที่มีคีย์หลักร่วมซึ่งอ้างอิงตารางหลักทั้งสอง) สามารถสร้างได้ มีใครสำรวจประสิทธิภาพการทำงานของการใช้งานที่หลากหลาย?

-Edit-

ในขณะที่รายการของคีย์ที่แนะนำในเอกสารเป็นจริงวิธีหนึ่งที่จะทำมันฉันสนใจในประสิทธิภาพและอัตราความผิดปกติของที่และการใช้งานอื่น ๆ มีประโยชน์ในการสร้างรายการคีย์ร่วมกันหรือไม่? ความพยายามที่เกี่ยวข้องกับการทำซ้ำได้รับคุ้มราคาหรือไม่ มีวิธีที่ดีกว่าที่จะทำหรือไม่

คำตอบ:


3

ฉันกำลังทำงานกับที่เก็บข้อมูล GAE ด้วยในขณะนี้คุณควรตรวจสอบบทความนี้หากคุณยังไม่ได้ดำเนินการ หากคุณพบสิ่งที่มีประโยชน์โปรดอัปเดตคำถามของคุณ

แก้ไข:

ฉันพบสิ่งนี้วันนี้ลองดูสิ


0

จากประสบการณ์ของฉันเกี่ยวกับ GAE คุณควรใช้การค้นหาตารางอย่าง จำกัด การเพิ่มตาราง "เข้าร่วม" จะทำให้สิ่งต่าง ๆ ช้าลงมากยิ่งขึ้น ตัวอย่างเช่นถ้าคุณมีตาราง A และ B ที่แบ่งปันความสัมพันธ์แบบกลุ่มต่อกลุ่มและคุณสร้างเขตข้อมูล "เข้าร่วม" J ที่มีเขตข้อมูลความสัมพันธ์คุณสมบัติกับทั้ง A และ B คุณจะต้องค้นหา J ทุกครั้งที่คุณต้องการค้นหา บันทึกที่เกี่ยวข้อง (เอนทิตี)

มันจะเร็วกว่ามากหากจะมีรายการของคีย์ใน A หรือ B (หรือทั้งสองอย่างถ้าจำเป็น) เพราะจะถูกรวมไว้เมื่อคุณดึงข้อมูล / เอนทิตีนั้น ตราบใดที่คุณไม่มีคีย์มากเกินไปในรายการ (นั่นคือเอนทิตีไม่ใหญ่เกินไป) นี่คือวิธีที่จะไป

ฉันเริ่มใช้ ndb กับแอปพลิเคชันของฉันและมีประโยชน์บางอย่างที่สำคัญเมื่อใช้คีย์เมื่อดึงเอนทิตี หากเอนทิตีแคชแล้วมันจะดึงหน่วยความจำหรือ memcache ก่อน ดังนั้นหากมีการเหลื่อมกันอย่างมีนัยสำคัญในรายการคีย์ของคุณการดึงข้อมูลจะเร็วขึ้นมากสำหรับเอนทิตีที่ดึงข้อมูลมาแล้ว

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