سؤال

أبحث عن قاعدة بيانات تدعم الوظيفة التالية:

1) السجلات في قاعدة البيانات هي مثل القواميس Python أو Meshes Perl. على سبيل المثال، قد يبدو سجل "الشراء" هكذا:

<purchase 5436> = { product: "BMX Bike", price: 99.50, city: "Springfield" }

2) يتم تخزين السجلات في صفائف طول المتغير. تحتوي قاعدة البيانات على الكثير من هذه الصفائف. على سبيل المثال، قد يبدو جدول الشراء هكذا:

purchase array 1: [ <purchase 5436>, <purchase 54>, <purchase 112> ]
purchase array 2: [ <purchase 76>, <purchase 5984>, <purchase 1102>, <purchase 12> ]
...
purchase array 658: [ <purchase 10142>, <purchase 35>, <purchase 6458>, <purchase 23> ]

3) أريد أن أكون قادرا على القيام نوعين من الاستعلامات في قاعدة البيانات هذه:

3A) عد عدد السجلات التي تطابق معايير مختلفة. على سبيل المثال، عدد الشراء الذي تم إجراؤه بقيمة أكثر من 50؟ أنا أعرف الكثير من قواعد البيانات التي تدعم هذا.

3 ب) عد عدد مرات السجلات تظهر في ترتيب معين. على سبيل المثال، عدد المصفوفات التي توجد فيها شراء أكثر من 50 تم إجراؤها ثم تم إجراء عملية شراء في "Springfield"؟ لا أعرف أي نوع من قاعدة البيانات التي ستستخدمها للقيام بذلك.

تحرير: استجابة لستيفاز آزن: يجب أن أذكر أن السرعة مهمة، وتحتاج قاعدة البيانات هذه إلى دعم غيغابايت من البيانات. على سبيل المثال، قد يكون هناك 1،000،000،000 صفيف شراء، وأريد الاعتماد على عدد منها شراء في "Springfield" متبوعا بالشراء في "Hometown" (لاحظ أن الأمر مهم). ربما أنا مخطئ، لكنني أعتقد أن DB العلائقية ستكون بطيئة للغاية لهذا الغرض.

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

المحلول

هل أنت متأكد أنك لا تستطيع القيام بذلك مع DB العلائقية باستخدام رابط أو جدول مفرق؟

سيكون لديك عمود أوامر، عمود من المنتجات ومنتجات طلبات الجدول التي لها صف لكل منتج لكل طلب.

أنا أعتقد ذلك مقالة - سلعة ربما تعبر عن أفضل مما أستطيع.

نصائح أخرى

على سبيل المثال، قد يكون هناك 1،000،000،000 صفيف شراء، وأريد الاعتماد على عدد منها شراء في "Springfield" متبوعا بالشراء في "Hometown" (لاحظ أن الأمر مهم). ربما أنا مخطئ، لكنني أعتقد أن DB العلائقية ستكون بطيئة للغاية لهذا الغرض.

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

إن التأثير الأكثر أهمية على السرعة هو أن تكون 1) وهي تقنية محسنة لتحسين مجموعات البيانات المستندة إلى القرص - وهذا بالضبط ما تقدمه جميع "عرض DMBSS"، و 2) البيانات المنظمة بالطريقة الصحيحة.

3 ب) عد عدد مرات السجلات تظهر في ترتيب معين. على سبيل المثال، عدد المصفوفات التي توجد فيها شراء أكثر من 50 تم إجراؤها ثم تم إجراء عملية شراء في "Springfield"؟ لا أعرف أي نوع من قاعدة البيانات التي ستستخدمها للقيام بذلك.

سوف تستخدم DB العلائقية مع مخطط مصمم لدعم هذا النوع من الاستعلام. وبعد سوف تضطر إلى التخلي عن مفهومك المسبقة لكيفية تمثيل البيانات.

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

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

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

قد يكون هناك نوع من الاستعلامات، على الرغم من أنه لن تكون قادرا على القيام به في الوقت الفعلي في الوقت الحقيقي في مسألة MiliSeconds، وأن أحدهما عن العثور على المشتريات مع شرط واحد يتبعه المشتريات مع حالة أخرى يبدو هذا. إما أن تجد وسيلة للحفاظ على تتبع مباشر لهذه الأرقام أثناء إدراج / حذف / تعديل / تعديل، أو سوف تضطر إلى تكرار فعلي ملايين الصفائف، بأي حال من الأحوال لتجنب ذلك. ستحتاج إلى التفكير في مدى حدوث بياناتك الحديثة، وربما احسبت مسبقا كل بضع ساعات لتوليد تلك الإحصاءات ثم تكون قادرة على الوصول إليها في O (1) مع مفاتيح البحث.

باختصار، مشكلتك هي الطريقة التي تتجاوز التكنولوجيا التي تقرر استخدامها لحلها.

لست متأكدا من أنني أفهم تماما ما تبحث عنه، لكن هل نظرت إلي البوتشدب وبعد وثيقة موجهة ومخطط مجانا

ما تصفه هو مشابه تماما النكاف حتى لو كان لدي بعض الشكوك حول القدرة على تحديد الاستفسارات حيث تكون ترتيب "السجلات" في الصفائف ممكنة.

إلقاء نظرة على الرابط، وهناك أيضا الإصدارات التجارية الحالية من هذا كما سترى.

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