إلى أي مدى يمكنك حقا الذهاب مع الاتساق "في نهاية المطاف"، وأية معاملات (ويعرف أيضا باسم SimpleDB)؟

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

سؤال

وأنا حقا تريد استخدام SimpleDB، ولكن أخشى أنه من دون تأمين والمعاملات الحقيقي النظام بأكمله هو خطأ قاتل. أنا أفهم أن للتطبيقات قراءة عالية / منخفضة والكتابة فمن المنطقي، منذ نهاية المطاف يصبح نظام ثابت، ولكن ماذا عن تلك الفترة في ما بين؟ يبدو مثل الاستعلام الصحيح في ديسيبل يتعارض شأنه أن يديم الفوضى في جميع أنحاء قاعدة البيانات بأكملها بطريقة من الصعب جدا لتعقب. نأمل أنا كونها مجرد ثؤلول القلق ...

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

المحلول

وهذه هي معركة كلاسيكية جميلة بين الاتساق وقابلية و- إلى حد ما - توافر. بعض البيانات ليست في حاجة دائما ليكون ذلك متسقا. على سبيل المثال، أن ننظر في digg.com وعدد من تايلور ضد قصة. هناك فرصة جيدة أن تتكرر القيمة في السجل "مراجعته" بدلا من اجبار DB للقيام الانضمام على الطاولة "user_digg". لا يهم إذا كان هذا الرقم غير دقيق تماما؟ على الاغلب لا. ثم استخدام شيء من هذا القبيل SimpleDB قد يكون مناسبا. ولكن إذا كنت تكتب النظام المصرفي، ربما يجب عليك قيمة الثبات فوق كل اعتبار. :)

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

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

نصائح أخرى

وعلى افتراض كنت تتحدث عن هذا SimpleDB ، كنت لسنا كونه worrywart. هناك أسباب حقيقية لا استخدامه بمثابة DBMS العالم الحقيقي.

والخصائص التي تحصل عليها من الدعم معاملة في DBMS يمكن اختصار بالاسم المختصر "A.C.I.D.": Atomicity تناسق، عزل، والمتانة. A و D لديهم في الغالب علاقة مع تعطل النظام، وC ولدي علاقة مع العملية العادية. انهم كل شيء يأخذ الناس تماما أمرا مفروغا منه عند العمل مع قواعد البيانات التجارية، لذلك إذا كنت تعمل مع قاعدة البيانات التي لم يكن لديك واحد أو أكثر منهم، هل يمكن أن يكون في أي عدد من مفاجآت سيئة.

<القوي> Atomicity : لأي معاملة إما كاملة تماما أو لا على الاطلاق (أي أنه إما أن تلتزم أو إحباط نظيفة). وهذا ينطبق على بيانات واحدة (مثل "الجدول UPDATE ...")، وكذلك أطول، والمعاملات أكثر تعقيدا. إذا لم يكن لديك هذا، ثم أي شيء يذهب على نحو خاطئ (مثل القرص الحصول على كامل، وتحطمها الكمبيوتر، الخ) قد ترك شيئا نصف عمله. وبعبارة أخرى، لا يمكن الاعتماد من أي وقت مضى على DBMS لحقا الأشياء التي اقول لها، لأن أي عدد من المشاكل في العالم الحقيقي يمكن ان تحصل في الطريق، وحتى عبارة UPDATE بسيط قد تحصل على الانتهاء جزئيا.

على الاتساق : لسوف يكون دائما فرض أي القواعد التي أعددتها حول قاعدة البيانات. مثل، إذا كان لديك قاعدة تقول A يساوي دائما B، ثم لا شيء أي شخص لا لنظام قاعدة البيانات يمكن كسر هذه القاعدة - انها سوف تفشل أي عملية الذي يحاول. هذه ليست واردة المهم كما لو أن كل التعليمات البرمجية الخاصة بك على ما يرام ... ولكن في الحقيقة، عندما هو الحال من أي وقت مضى؟ بالإضافة إلى ذلك، إذا كنت في عداد المفقودين شبكة الأمان هذه، الامور يوكي حقا عندما تخسر ...

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

على متانة : إذا كنت تفقد السلطة أو تعطل البرنامج، فإن ما يحدث على المعاملات قاعدة البيانات التي كانت في التقدم؟ إذا كان لديك قوة التحمل، وكان الجواب "لا شيء - انهم جميعا آمنا". قواعد البيانات تفعل ذلك عن طريق استخدام ما يسمى "تراجع / الإعادة تسجيل"، حيث يتم تسجيل كل شيء يذكر القيام به لقاعدة البيانات أولا (عادة على قرص منفصل للسلامة) بطريقة بحيث يمكنك إعادة الوضع الحالي بعد فشل. دون ذلك، وغيرها من الممتلكات أعلاه هي نوع من لا طائل منه، لأنك لا يمكن أبدا أن يكون متأكدا 100٪ أن الأمور ستبقى ثابت بعد وقوع الحادث.

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

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

والمقصود لا شيء من هذا بمثابة ضربة على SimpleDB. أعتبر من المؤلف من البرمجيات : "على الرغم من أنه أداة تعليمية كبيرة، لا أستطيع أن أتخيل أن أي شخص يرغب في استخدامه لأي شيء آخر ".

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