سؤال

أحتاج إلى تخزين رسم بياني غير موجه في قاعدة بيانات محرك تطبيق Google. لأغراض التحسين ، أفكر في الاستخدام فهارس قاعدة البيانات. باستخدام Google App Engine ، هل هناك أي طريقة لتحديد أعمدة جدول قاعدة البيانات لإنشاء الفهرس؟

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

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

ملاحظة: أنا أستخدم بيثون.

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

نصائح أخرى

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

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

للاستعلام المحدد الذي ذكرته ، select * from edges where vertex1 == x and vertex2 == y, ، يمكن أن يقوم مخزن البيانات بتشغيله دون فهرس مخصص على الإطلاق. نرى هذا القسم من المستندات لمزيد من التفاصيل.

باختصار ، ما عليك سوى تشغيل الاستعلامات التي تحتاجها ، ولا تفكر كثيرًا في المؤشرات أو تحاول التحسين كما لو كنت DBA. إنها ليست قاعدة بيانات علائقية. : ص

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