ฉันมาจากฐานข้อมูลเชิงสัมพันธ์โลกจากนั้นฉันก็พบสิ่งนี้ดาต้าสโตร์ มันใช้เวลาหลายวันกว่าจะหยุดมัน มีการค้นพบของฉันอยู่บ้าง
คุณต้องรู้อยู่แล้วว่า Datastore สร้างขึ้นเพื่อปรับขนาดและนั่นคือสิ่งที่แยกออกจาก RDMBS เพื่อขยายขนาดให้ดีขึ้นด้วยชุดข้อมูลขนาดใหญ่ App Engine ได้ทำการเปลี่ยนแปลงบางอย่าง (บางครั้งก็หมายถึงการเปลี่ยนแปลงจำนวนมาก)
RDBMS VS DataStore
โครงสร้าง
ในฐานข้อมูลของเรามักจะจัดโครงสร้างข้อมูลของเราในตารางแถวซึ่งอยู่ใน Datastore มันจะกลายเป็นชนิดและหน่วยงาน
ความสัมพันธ์
ใน RDBMS ผู้คนส่วนใหญ่มีความสัมพันธ์แบบ One-to-One, One-One, One-to-One, ใน Datastore เนื่องจากมี "No Joins" แต่เรายังสามารถบรรลุมาตรฐานของเราได้โดยใช้ " ReferenceProperty " "เช่นOne-to-One ตัวอย่างความสัมพันธ์
ดัชนี
มักจะอยู่ใน RDMBS เราสร้างดัชนีเช่นคีย์หลัก, คีย์ต่างประเทศ, คีย์เฉพาะและคีย์ดัชนีเพื่อเพิ่มความเร็วในการค้นหาและเพิ่มประสิทธิภาพฐานข้อมูลของเรา ในดาต้าสโตร์คุณต้องสร้างอย่างน้อยหนึ่งดัชนีต่อชนิด (มันจะสร้างโดยอัตโนมัติไม่ว่าคุณจะชอบหรือไม่) เพราะดาต้าสโตร์ค้นหาเอนทิตีของคุณบนพื้นฐานของดัชนีเหล่านี้และเชื่อฉันว่าเป็นส่วนที่ดีที่สุดใน RDBMS เขตข้อมูลที่ไม่ใช่ดัชนีแม้ว่ามันจะใช้เวลาพอสมควร แต่มันจะ ใน Datastore คุณไม่สามารถค้นหาโดยใช้คุณสมบัติที่ไม่ใช่ดัชนี
นับ
ใน RDMBS มันเป็นเรื่องง่ายมากที่จะนับ (*) แต่ในการเก็บข้อมูล, โปรดอย่าได้คิดว่ามันในทางปกติ (ใช่มีฟังก์ชั่นการนับ) มันมีจำกัด 1000และมันจะมีค่าใช้จ่ายเท่าopertion ขนาดเล็กเป็นนิติบุคคลที่ ไม่ดี แต่เรามีตัวเลือกที่ดีอยู่เสมอเราสามารถใช้Shard Countersได้
ข้อ จำกัด เฉพาะ
ใน RDMBS เราชอบคุณสมบัตินี้ใช่ไหม แต่ Datastore มีวิธีการของตัวเอง คุณไม่สามารถกำหนดคุณสมบัติให้เป็นเอกลักษณ์ :(
แบบสอบถาม
GAE Datatore มีคุณสมบัติที่ดีมากเช่น (โอ้ไม่! เก็บข้อมูลไม่ได้เช่นคำหลัก) SQL ซึ่งเป็นgql
การแทรกข้อมูล / อัปเดต / ลบ / เลือก
นี่คือสิ่งที่เราทุกคนสนใจเช่นเดียวกับใน RDMBS เราต้องการหนึ่งแบบสอบถามสำหรับแทรกอัปเดตลบและเลือกเช่นเดียวกับ RDBMS Datastore ได้ใส่ลบรับ (ไม่ตื่นเต้นเกินไป) เพราะ Datastore ใส่หรือรับในแง่ของการเขียน, อ่าน, การดำเนินการขนาดเล็ก (อ่านค่าใช้จ่ายสำหรับการโทรดาต้าสโตร์ ) และนั่นคือสิ่งที่การสร้างแบบจำลองข้อมูลเข้ามาดำเนินการ คุณต้องลดการทำงานเหล่านี้และทำให้แอปของคุณทำงานต่อไป เพื่อลดการดำเนินการอ่านคุณสามารถใช้Memcache