كيف استعلام قاعدة بيانات مقياس الوقت مع قاعدة بيانات الحجم ؟

StackOverflow https://stackoverflow.com/questions/4973855

  •  12-11-2019
  •  | 
  •  

سؤال

كنت مؤخرا على OEIS (الانترنت موسوعة صحيح متواليات) مؤخرا ، في محاولة للبحث عن تسلسل معين كان على قد.

الآن, هذه قاعدة بيانات كبيرة إلى حد ما.ويذكر الموقع أنه إذا 2006 (!5 سنوات من العمر) طبعة طبعت, انه احتلال 750 حجم النص.

أنا متأكد من أن هذا هو نفس النوع من إصدار جوجل في التعامل معها كذلك.ولكن لديهم أيضا نظام توزيع حيث الاستفادة من موازنة التحميل.

إهمال موازنة ومع ذلك, كم من الوقت يستغرق القيام الاستعلام مقارنة مع حجم قاعدة البيانات?

أو بعبارة أخرى ما هو الوقت تعقيد استفسار فيما يتعلق DB الحجم ؟

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

1, 4, 9, 16, 25, 36, 49
هل كانت مفيدة؟

المحلول

فإنه يعتمد بقوة على الاستعلام هيكل قاعدة البيانات الخلاف ، وهلم جرا.ولكن بصفة عامة معظم قواعد البيانات سوف تجد طريقة استخدام فهرس وهذا مؤشر إما أن يكون بعض نوع من هيكل الشجرة (انظر http://en.wikipedia.org/wiki/B-tree على خيار واحد) في هذه الحالة وقت الوصول يتناسب مع log(n) أو آخر تجزئة في هذه الحالة وقت الوصول يتناسب مع س(1) في المتوسط (انظر http://en.wikipedia.org/wiki/Hash_function#Hash_tables للحصول على شرح كيفية عملها).

وبالتالي فإن الجواب هو عادة O(1) أو O(log(n)) اعتمادا على أي نوع من هيكل البيانات المستخدمة.

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

نصائح أخرى

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

لا توجد وسيلة للإجابة على مثل هذا السؤال العام.

قاعدة بيانات مصممة بشكل صحيح وتنفيذها مع Terabytes من البيانات قد تفوقت فعلا بشكل فعليا قاعدة بيانات صغيرة مصممة بشكل سيء (Officulaly One بدون فهرسة وواحدة تستخدم استفسارات غير قابلة للشفاء بشكل سيئ وأشياء مثل التلقائي المرتبط).هذا هو السبب في أن أي شخص يتوقع أن يكون لديك كميات كبيرة من البيانات تحتاج إلى استئجار خبير في تصميم قاعدة البيانات لقواعد البيانات الكبيرة للقيام بالتصميم التالفي غير موجود في وقت لاحق عندما تكون قاعدة البيانات كبيرة.قد تحتاج أيضا إلى الاستثمار في نوع المعدات التي تحتاجها للتعامل مع الحجم أيضا.

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