قاعدة بيانات SQL VS. ملفات مسطحة متعددة (آلاف ملفات CSV الصغيرة)

نحن نقوم بتصميم تحديث للنظام الحالي (C ++ \ CLI و C #). سيقوم النظام بجمع كميات صغيرة (~ 1Mb) من البيانات من أجهزة 10K ~ (في المستقبل القريب). في الوقت الحالي ، يتم استخدامها لحفظ بيانات الجهاز في CSV (جدول) وتخزينها كلها في بنية مجلد واسعة.

يتم إدخال البيانات فقط (إنشاء/إلحاق ملف ، إنشاء مجلد) لم يتم تحديثه/إزالته. تتم معالجة البيانات عن طريق قراءة العديد من CSV إلى برنامج خارجي (مثل Matlab). تستخدم أساسا للتحليل الإحصائي.

يوجد خيار لبدء حفظ هذه البيانات إلى قاعدة بيانات MS-SQL. يمكن أن يصل وقت المعالجة (قراءة ملف CSV إلى البرنامج الخارجي) إلى بضع دقائق.

  • كيف نختار الطريقة التي يجب استخدامها؟
  • هل تأخذ إحدى الطرق مساحة تخزين أكبر بكثير من الأخرى؟
  • تقريبًا ، متى تصبح قراءة البيانات الأولية من قاعدة البيانات أسرع من قراءة ملف CSV؟ (10 ملفات ، 100 ملف؟ ...)

أنا أقدر إجاباتك ، إيجابيات وسلبيات هي موضع ترحيب.

شكرا لك على وقتك.

0
هذه واحدة من تلك الأسئلة التي لا يمكنك الإجابة عنها إلا من خلال تجربتها.
وأضاف المؤلف Gabe, مصدر
قد تفكر أيضًا في استخدام قاعدة بيانات noSQL.
وأضاف المؤلف HLGEM, مصدر

4 إجابة

حسنًا إذا كنت تستخدم بيانات في CSV واحدًا للحصول على بيانات في CSV آخر ، أعتقد أن SQL Server سيكون أسرع من كل ما تصادفه. أظن أن SQL Server سيكون أسرع في معظم الحالات ، ولكن لا أستطيع أن أقول على وجه اليقين. لقد وضعت Microsoft الكثير من الموارد في إنشاء نظام إدارة قواعد البيانات (DBMS) الذي يفعل بالضبط ما تحاول القيام به.

بناءً على وصفك ، يبدو أنك قد أنشأت نظام DBMS تقريبًا استنادًا إلى بيانات الجدول وهيكل المجلد. أظن أنه إذا قمت بالتبديل إلى استخدام SQL Server ، فربما تجد عددًا من المناطق التي تكون فيها الأمور أسرع وأسهل.

الايجابيات الممكنة:

  • الوصول بشكل أسرع
  • أسهل لإدارة
  • أسهل للتوسع إذا احتجت إلى
  • أسهل في تنفيذ تكامل البيانات
  • أسهل لتصميم علاقات أكثر تعقيدًا

سلبيات ممكن:

  • يجب عليك إعادة كتابة التعليمات البرمجية الموجودة لديك لاستخدام SQL Server بدلاً من النظام الحالي الخاص بك
  • قد تضطر إلى الدفع مقابل SQL Server ، يجب عليك التحقق لمعرفة ما إذا كان يمكنك استخدام Express

حظا طيبا وفقك الله!

0
وأضاف
صحيح. من السهل جدًا الحصول على استراحة الإدارة ، كما أنها تقدم طرقًا لتحرير البيانات تعتمد على واجهة المستخدم بالكامل.
وأضاف المؤلف Abe Miessler, مصدر
واحدة من أكبر المزايا التي أراها لملفات CSV هي أنه يمكنك الدخول في واحدة وتحريرها بسهولة إلى حد ما. يمكنك القيام بنفس الشيء في SQL Server ، لكنك تحتاج إلى نسخة من استوديو الإدارة وتعرف على كيفية تحرير البيانات.
وأضاف المؤلف Mike Bailey, مصدر
متفق عليه. بالنسبة لمستخدم الأعمال العادي ، قد يكون تحرير CSV أسهل. لكن يبدو أن الأمر لا يمثل مشكلة.
وأضاف المؤلف Mike Bailey, مصدر

أود محاولة ضرب هذه الأسئلة قليلاً خارج الترتيب.

تقريبًا ، عندما تصبح قراءة البيانات الأولية من قاعدة البيانات   أسرع من قراءة ملف CSV؟ (10 ملفات ، 100 ملفًا؟ ...)

فورا. تم تحسين قاعدة البيانات (على افتراض أنك قمت بأداء واجبك المنزلي) لقراءة البيانات بمعدلات مذهلة.

هل تأخذ إحدى الطرق مساحة تخزين أكبر بكثير من   البعض؟

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

كيف نختار الطريقة التي يجب استخدامها؟

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

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

0
وأضاف

إذا كان لديك خيار استخدام قاعدة بيانات ms-sql ، فسأفعل ذلك.

الحفاظ على البيانات في بنية مجلد واسعة ليست فكرة جيدة. تتضمن قراءة بياناتك قراءة عدة ملفات. يمكن تخزينها في أي مكان على القرص الخاص بك. سيكون وقت ملفك io مرتفعًا جدًا. خادم SQL كونه قاعدة بيانات الإنتاج لديه هذه المشاكل التي اتخذت بالفعل الرعاية.

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

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

0
وأضاف

هذا سؤال كثير من عملائنا حيث أعمل. ما لم تكن بحاجة إلى ملفات مسطحة لبنية تحتية موجودة ، أو لا تعتقد أنه يمكنك معرفة SQL Server ، أو إذا كان لديك فقط بعض الملفات مع كميات صغيرة من البيانات لإدارتها ، ستكون أفضل حالاً باستخدام SQL Server.

0
وأضاف