حل قاعدة بيانات في الذاكرة مع أسرع النسخ المتماثل في الوقت الحقيقي [مغلق
-
22-09-2019 - |
سؤال
لدينا جدول صفات 10 آلاف صف يحتوي على عمودين فقط ، مفتاح أساسي وعمود ثانٍ يحتفظ بالوضع. المشكلة هي أننا نحتاج إلى تكرار هذه الحالة عبر 3 مواقع مادية في الولايات المتحدة (على بعد حوالي 2000 ميل) ، في الوقت الفعلي بالقرب من الوقت الحقيقي أو بأسرع ما يمكن عملياً على الشبكة. يمكن لأي من المواقع الثلاثة تحديث الحالة لصفًا معينًا في هذا الجدول الذي يجب تكراره في الوقت الفعلي بالقرب من الموقعين الآخرين.
هل هناك أي قاعدة بيانات مفتوحة أو تجارية خفيفة الوزن في الذاكرة يمكن أن تساعدنا على تحقيق ما نحاول القيام به. استمرار القرص ليس مهمًا هنا.
المحلول
الدفع ريديس. ها هي النسخ المتماثل Howto.
أيضًا ، إذا قررت أن DB لا يحتاج تمامًا إلى أن يكون في الذاكرة ، فهذا يجب أن يكون سريعًا ، فقد ترغب في التفكير فيه Couchdb. يمكن أن تفعل النسخ المتماثل المستمر ، وهو فوري بشكل أساسي ، وجميع العقد هي أساتذة. لديها آلية للكشف عن الصراع وحلها بشكل مدروس. منشور المدونة هذا هي مقدمة رائعة لأحدث وأكبر قدرات النسخ المتماثل CouchDB.
نصائح أخرى
على الرغم من عدم وجود دعم النسخ المتماثل مدمج ، يمكنك استخدامه محفزات مع الذاكرة sqlite قاعدة البيانات. داخل الزناد ، استخدم أ وظيفة مخصصة لتوصيل التغييرات على المواقع الأخرى.
قد ترغب في التحقق Altibase. قالوا إن لديهم أسرع قاعدة بيانات في العالم. يقولون إنهم أسرع من 5 إلى 10 مرات من معظم DBMs في الذاكرة ولديهم أيضًا تجربة مجانية على الموقع.
أقوم بتنفيذ SQL معقد يحتوي على أكثر من 6000 صف 10000 مرة في خادم WebSphere الخاص بي. إجمالي أوقات التنفيذ الصافية مثل ذلك:
Derby (In Memory) Oracle(standard DB) SQLite (In Memory) HSQLDb (In Memory) nano sec. second nano sec. second nano sec. second nano sec. second 1. try 58000000 0,058 6149976000 6,1 1141988000 1,14 999403000 1,00 2. try 78560000 0,078 5268477000 5,2 1182621000 1,18 1338705000 1,34 3. try 58849000 0,058 5200898000 5,2 1133003000 1,13 2239527000 2,24 4. try 60901000 0,06 5435216000 5,4 1205442000 1,21 1370711000 1,37 5. try 58798000 0,058 6501929000 6,5 1186734000 1,19 1001800000 1,00 6. try 62928000 0,062 5913053000 5,9 1224470000 1,22 1066736000 1,07 7. try 71171000 0,071 5111207000 5,1 1200769000 1,20 1304524000 1,30 8. try 66913000 0,066 5517989000 5,5 1173495000 1,17 1299230000 1,30 9. try 58777000 0,058 7209555000 7,2 1179013000 1,18 1031795000 1,03 10. try 75299000 0,075 5356514000 5,3 1182715000 1,18 1368461000 1,37 average 65019600 0,064 5766481400 5,7 1181025000 1,18 1302089200 1,30
من الواضح أنني أقارن ديربي و SQLite و HSQLDB. Oracle ليست في الذاكرة DB. لكنني وضعت نتيجة للجدول لأنه لإظهار فرق السرعة بين DB في الذاكرة و DB العادي.
ملاحظة: في SQLite و HSQLDB نتيجة غير مستقرة. لذلك اخترت 10 نتائج مستقرة في 100 محاولة. في بعض الأحيان يكون HSQLDB أسرع من sqlite. أعتقد أن أدائهم هو نفسه.