سؤال

أحتاج إلى أفكار لتنفيذ آلية قاعدة بيانات/تخزين عالية الأداء (حقًا). في نطاق تخزين 20،000 كائن ، مع تحديث كل كائن كل 5 ثوانٍ أو نحو ذلك. أود حل foss.

ما هو أفضل خيار لي؟ ما هي تجاربك؟

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

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

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

المحلول

sqlite هي قاعدة بيانات قائمة بذاتها مفتوحة المصدر تدعم قواعد البيانات في الذاكرة (فقط الاتصال :memory:). لديها روابط للعديد من لغات البرمجة الشعبية. إنها قاعدة بيانات علائقية تقليدية تستند إلى SQL ، لكنك لا تقوم بتشغيل خادم منفصل-فقط استخدمها كمكتبة في البرنامج. إنه سريع جدًا. سواء كان ذلك سريعًا بما فيه الكفاية ، فأنا لا أعرف ، لكن قد يكون الأمر يستحق التجربة.

سائق جافا.

نصائح أخرى

هل تقوم بتحديث 20 ألف كائن كل 5 ثوان أو تحديث واحدة من 20 ألف كل 5 ثوان؟

أي نوع من الأشياء؟ لماذا لا يكفي RDBMS التقليدية؟

الدفع HSQLDB و Prevayler. Prevayler هو تحول نموذجية من RDBMs التقليدية - التي استخدمتها (النموذج ، أي ، وليس على وجه التحديد) في عدد من المشاريع ووجدت أنها لها ميزة حقيقية.

يعتمد بالضبط كيف تحتاج إلى الاستعلام عنه ، لكن هل نظرت إلى memcached؟

http://www.danga.com/memcached/

يمكن أن تشمل الخيارات الأخرى طاولات الذاكرة MySQL, ، ال ذاكرة التخزين المؤقت APC إذا كنت تستخدم PHP.

بعض التفاصيل حول المشروع/المتطلبات ستكون مفيدة.

تخزين في الذاكرة؟

1) صفيف C 'Malloc' بسيط حيث سيتم فهرسة جميع الهياكل الخاصة بك.

2) بيركليد: http://www.oracle.com/technology/products/berkeley-db/index.html. إنه سريع لأنك تقوم بإنشاء فهارسك الخاصة (قاعدة البيانات الثانوية) ولا يوجد تعبير SQL ليتم تقييمه.

انظر إلى بعض المنتجات المدرجة هنا: http://en.wikipedia.org/wiki/in-memory_database

ما هو مستوى المتانة التي تحتاجها؟ من المحتمل أن يكون 20،000 تحديث كل 5 ثوانٍ أمرًا صعبًا بالنسبة لمعظم أجهزة IO من حيث عدد المعاملات إذا كتبت البيانات مرة أخرى إلى القرص لكل واحد.

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

إذا كانت قاعدة بيانات في الذاكرة حقًا لا ترغب في التغلب عليها في كثير من الأحيان ، فإن ذلك يبدو تافهاً إلى حد ما. لقد سمعت أن H2 جيد جدًا ، لكن SQLite قد يعمل أيضًا. يمكن لمثيل MySQL الذي تم ضبطه بشكل صحيح أيضًا القيام بذلك (ولكن قد يكون أكثر معقدًا)

خريطة كرونيكل هو جافا النقية متجر القيمة الرئيسية

  • إنه ذو أداء عالي حقًا ، ويحافظ مليون كتابة/ثانية من موضوع واحد. إنها أسطورة أنه لا يمكن كتابة قاعدة بيانات سريعة في Java.
  • يخزن وتحميل أي كائنات Java القابلة للتسلسل ، يوفر بسيطة Map واجهه المستخدم
  • LGPLV3

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

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