سؤال

لديّ صديق يدير تطبيق ويب للأشخاص الذين يسردون سيارات للبيع. هناك بضعة آلاف من العملاء الذين يستخدمونها ، ويحتوي كل عميل على المئات وأحيانًا الآلاف من الصفوف في قاعدة البيانات (تم تشغيل بعضها لمدة 5 سنوات مع بيع مئات السيارات كل شهر ، و 10 من الصفوف لكل بيع (تعليقات ، رسائل ، رسائل إلخ)). قام بتشغيل هذا النظام في قاعدة بيانات SQL Server واحدة في خادم فعلي واحد مع 20 جيجابايت أو ذاكرة الوصول العشوائي ومعالجات زوجين طوال الوقت ، دون أي مشاكل. هل هذا نوع من المعجزة؟

تمامًا مثل معظم المبرمجين ، أنا لست DBA فقط ، وذلك بفضل OrMs ، وما إلى ذلك. في كل مكان أنظر إليه ، يتحدث الناس عن الحاجة إلى Shard أو الحصول على خادم قاعدة بيانات منفصل للمستخدمين الكبار لتطبيق الويب. لماذا هذا؟ هل من غير الفعال حقًا أن يكون لديك ديسيبل كبير به الكثير أو الصفوف؟ هل يجب أن أخطط لاستخدام كاساندرا أو شيء من هذا القبيل ، أو هل يمكنني الاعتماد على التوسع بشكل جيد مع Postgres؟

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

المحلول

أنا شخصياً لا أعتقد أن ما وصفته هو أن قاعدة بيانات كبيرة. الخادم (20 العربات من ذاكرة الوصول العشوائي؟ ؛)) يبدو لائق. الأمر يتعلق بالاستخدام والتصميم. إذا تم فهرسة قاعدة البيانات وتصميمها بشكل جيد ، فقد تنمو أكبر بكثير على الأجهزة الحالية.

قبل القيام بأي نوع من التبديل ، كنت ببساطة أنظر إلى أرشفة بيانات عديمة الفائدة وتحسين الاستعلامات إذا كان هناك خوف من مشكلات الأداء.

نصائح أخرى

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

يجب ألا تواجه أي مشكلة في SQL Server أو Oracle أو أي قاعدة بيانات حديثة علائقية أو غير علمية. لقد قمت بإدارة قواعد بيانات مع 100 ملايين من السجلات و terabytes من البيانات.

عادةً ما تقوم بتقسيم المكونات عبر خوادم مختلفة حتى تتمكن من إدارة الوقت والمرونة والأداء بسهولة أكبر.

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

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

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

لا ينبغي أن تواجه SQL Server أو قواعد بيانات فئة Enterprise الأخرى أي مشاكل في قواعد بيانات 10 أو 100 جيجابايت ، طالما أنها غير مصممة بشكل سيء للغاية. (لدينا بعض الآلات مع هذه السعة/الاستخدام التي لا تكافح على الإطلاق.).

في ذهني هذا لا شيء. إن وجود عشرات الملايين من الصفوف على جداول متعددة ذات حجم قاعدة البيانات الذي يتجاوز 10 غيغابايت لم يتسبب في مشاكل لخادم MS SQL. بالطبع ، ليس سريعًا جدًا مع هذا القدر من البيانات ، ولكنه يعمل بشكل جيد.

وللإجابة على السؤال ، فإن حجمه كبير جدًا لدرجة أنه يسبب مشاكل. وعندما يبدأ التسبب في مشاكل يعتمد على بنية الجدول ومتطلبات أدائك.

تعتبر قواعد البيانات فعالة للغاية في تخزين واسترداد البيانات العلائقية (أي البيانات المنظمة ولديها إشارات إلى البيانات الأخرى) - وهذا ما صممت للقيام به. بصراحة ، 99 ٪ من الناس ينشرون حول متاجر القيمة الرئيسية و Cassandra وما لم يكن لديهم أدنى فكرة عما يفعلونه. خادم قاعدة البيانات على ما يرام لتخزين كميات كبيرة من البيانات ، خاصة إذا كنت على استعداد لوضع القليل من العمل في ضبطها بشكل صحيح.

ومع ذلك ، هناك حالات استخدام لكاساندرا وآخرون. آل. - إذا كان لديك في الغالب بيانات مفتاح/قيمة غير منظمة أو لا تحتاج إلى اتساق أو ترغب في تقويم التكرار ، فقد يكون من المفيد التحقيق.

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

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