سؤال

نظرًا لأن مخزن بيانات Google App Engine يعتمد على طاولة كبيرة ونحن نعلم أن هذه ليست قاعدة بيانات علائقية، كيف يمكنك تصميم ملف مخطط قاعدة البيانات/نموذج البيانات للتطبيقات التي تستخدم هذا النوع من نظام قاعدة البيانات؟

هل كانت مفيدة؟

المحلول

يعد تصميم مخطط Bigtable عملية مفتوحة، ويتطلب منك بشكل أساسي التفكير في ما يلي:

  • أنماط الوصول التي ستستخدمها وعدد مرات استخدام كل منها
  • العلاقات بين أنواعك
  • ما هي المؤشرات التي سوف تحتاج إليها
  • أنماط الكتابة التي ستستخدمها (من أجل توزيع الحمل بشكل فعال)

يقوم مخزن بيانات GAE تلقائيًا بإلغاء تسوية بياناتك.أي أن كل فهرس يحتوي (في الغالب) على نسخة كاملة من البيانات، وبالتالي يضيف كل فهرس بشكل كبير إلى الوقت المستغرق لإجراء الكتابة، ومساحة التخزين المستخدمة.

إذا لم يكن الأمر كذلك، فإن تصميم مخطط مخزن البيانات سيكون يتطلب الكثير من العمل:سيتعين عليك التفكير مليًا في المفتاح الأساسي لكل نوع، والنظر في تأثير قرارك على مكان البيانات.على سبيل المثال، عند عرض منشور مدونة، ربما تحتاج إلى عرض التعليقات لتتوافق معه، لذلك من المحتمل أن يبدأ مفتاح كل تعليق بمفتاح المنشور المرتبط.

مع Datastore، لا يمثل هذا مشكلة كبيرة:سيبدو الاستعلام الذي تستخدمه شيئًا مثل "SELECT * من التعليق حيث post_id = n." (إذا كنت ترغب في صفحة التعليقات ، فستكون لديك أيضًا شرط الحد ، وساحقة محتملة من "و comment_id> last_comment_id". بسرعة سحرية.

ما يجب مراعاته هو أن كل فهرس إضافي يخلق بعض التكلفة الإضافية:من الأفضل أن تتمكن من استخدام أقل عدد ممكن من أنماط الوصول، حيث أن ذلك سيقلل من عدد المؤشرات التي سينشئها GAE، وبالتالي إجمالي مساحة التخزين التي تتطلبها بياناتك.

عند قراءة هذه الإجابة، أجدها غامضة بعض الشيء.ربما يساعد سؤال التصميم العملي على تحديد نطاق هذا الأمر؟:-)

نصائح أخرى

يمكنك استخدام www.web2py.com.يمكنك إنشاء النموذج والتطبيق مرة واحدة ويعمل على GAE ولكن أيضًا باستخدام SQLite وMySQL وPosgres وOracle وMSSQL وFireBird

نظرًا لأن GAE يعتمد على كيفية إدارة البيانات في Django، فهناك الكثير من المعلومات حول كيفية معالجة أسئلة مماثلة في وثائق Django (على سبيل المثال، راجع هنا, ، قم بالتمرير لأسفل إلى "نموذجك الأول").

باختصار، يمكنك تصميم نموذج قاعدة البيانات الخاص بك كنموذج كائن عادي والسماح لـ GAE بفرز جميع التعيينات المرتبطة بالكائنات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top