SQLite / فايربيرد جزءا لا يتجزأ من البيانات الرقمية

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

  •  01-07-2019
  •  | 
  •  

سؤال

لدي تجربة الجري حتى 1Mb/s من البيانات الرقمية التي يجب أن يتم تخزينها في وقت لاحق المعالجة.يبدو من السهل الكتابة مباشرة إلى قاعدة البيانات إلى ملف CSV و أود أن يكون ثم القدرة على استرداد بسهولة فرعية أو نطاقات.

لدي تجربة sqlite2 (عندما كان فقط حقول النص) ويبدو تقريبا بأسرع الخام الوصول إلى القرص.أي آراء على أفضل الحالية في عملية DBMS هذا التطبيق ؟

آسف - يجب إضافة هذا هو C++ إينتيالي على ويندوز ولكن عبر منصة لطيفة.من الناحية المثالية DB تنسيق الملف الثنائي يجب أن يكون عبر منصة.

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

المحلول

إذا كنت تحتاج فقط إلى قراءة/كتابة البيانات ، دون أي تدقيق أو التلاعب به في قاعدة البيانات ، ثم كلا ينبغي أن تفعل ذلك غرامة.فايربيرد ملف قاعدة بيانات يمكن نسخها ، طالما أن النظام لديه نفس endianess (أيلا يمكنك نسخ الملفات بين أنظمة إنتل معالجات PPC, ولكن إنتل-Intel على ما يرام).

ومع ذلك, إذا كنت بحاجة إلى أن تفعل أي شيء مع البيانات ، التي هي أبعد من القراءة/الكتابة ، ثم انتقل مع فايربيرد ، كما هو كامل SQL server مع 'المؤسسة' ميزات مثل مشغلات, طرق العرض والإجراءات المخزنة الجداول المؤقتة ، إلخ.

راجع للشغل, إذا كنت ترغب في إعطاء فايربيرد محاولة ، أنا نوصي بشدة لك استخدام IBPP المكتبة للوصول إليه.جدا رقيقة C++ التفاف حول فايربيرد C API.أنا عن 10 الطبقات التي تغلف كل شيء و هو ميت-سهلة الاستخدام.

نصائح أخرى

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

بقدر ما أكثر مرونة/الناس-حلول ودية ، sqlite3 على نطاق واسع ، صلبة ومستقرة لطيفة جدا في جميع أنحاء.

BerkeleyDB لديها عدد من الميزات الجيدة التي سوف تستخدم في ذلك ، ولكن أيا منها لا ينطبق في هذا السيناريو ، imho.

وأنا أقول الذهاب مع sqlite3 إذا كنت يمكن قبول اتفاقية الترخيص.

-D

يعتمد ما اللغة التي تستخدمها.إذا كان C/C++, TCL, أو PHP, سكليتي لا يزال من بين الأفضل في واحد كاتب السيناريو.إذا كنت لا تحتاج إلى SQL ، بيركلي DB-مكتبة نمط قد يكون أسرع قليلا ، مثل Sleepycat أو gdbm.مع العديد من الكتاب هل يمكن النظر منفصلة العميل/الخادم الحل ولكن لا يبدو عليك ذلك.إذا كنت تستخدم جافا ، hdqldb أو ديربي (التي يتم شحنها مع الشمس JVM تحت "JavaDB" العلامات التجارية) يبدو أن الحلول الاختيار.

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

  • HDF -- الأكثر شيوعا و مدعومة بشكل جيد في العديد من اللغات مجانا المكتبات.أنا أوصي هذا.
  • CDF -- شكل مماثل المستخدمة من قبل وكالة ناسا (ولكن صالحة للاستعمال من قبل أي شخص).
  • NetCDF - آخر مشابه (أحدث إصدار هو في الواقع جردت أسفل HDF5).

هذا الرابط يحتوي على بعض المعلومات حول الاختلافات بين البيانات الواردة أعلاه تعيين أنواع:http://nssdc.gsfc.nasa.gov/cdf/html/FAQ.html

وأظن أنه لا قاعدة بيانات تسمح لك لكتابة البيانات في مثل هذه السرعة العالية.يمكنك التحقق من ذلك لنفسك أن تكون متأكدا.في تجربتي - سكليتي فشلت في إدراج أكثر من 1000 الصفوف في الثانية بسيطة جدا الجدول مع عدد صحيح واحد أساسي.

في حالة وجود مشكلة في أداء - وأود أن استخدام تنسيق CSV إلى كتابة الملفات في تحميل البيانات إلى قاعدة البيانات (SQLite أو فايربيرد) لمزيد من المعالجة.

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