تخزين والوصول إلى كميات كبيرة من البيانات

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

  •  20-09-2019
  •  | 
  •  

سؤال

يقوم تطبيقي بإنشاء أجزاء من البيانات التي تبدو في ملف XML بالشكل التالي:

<resource url="someurl">
   <term>
      <name>somename</name>
      <frequency>somenumber</frequency>
   </term>    
   ...
   ...
   ...
</resource>

هذه هي الطريقة التي أقوم بها بتخزين هذه "الموارد" الآن.مورد لكل ملف XML.أي عدد من "المصطلحات" لكل "مورد" حسب الحاجة.المشكلة هي أنني سأحتاج إلى توليد حوالي 2 مليون من هذه الموارد.لقد أنتجت ما يقرب من 500.000 ولم يكن جهاز Mac الخاص بي سعيدًا جدًا بذلك.لذلك سؤالي هو:كيف يجب أن أقوم بتخزين هذه البيانات؟

  • قاعدة البيانات؟سيكون ذلك صعبًا، لأن بنية البيانات ليست ثابتة...
  • ربما دمج بعض الموارد في ملفات XML أكبر؟
  • ...?

لا أحتاج إلى تغيير البيانات بمجرد إنشائها.أقوم الآن بالوصول إلى مورد محدد باسم ملف هذا المورد.

هي موضع تقدير كبير أي اقتراحات!

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

المحلول

ليست كل قواعد البيانات علائقية.إلقاء نظرة على سبيل المثال com.mongodb.يقوم بتخزين بياناتك ككائنات تشبه json، على غرار مواردك.

مثال باستخدام الصدفة:

$ mongo
> db.resources.save({url: "someurl", 
                     terms: [{name: "name1", frequency: 17.0},
                             {name: "name2", frequency: 42.0}]})
> db.resources.find()
{"_id" :  ObjectId( "4b00884b3a77b8b2fa3a8f77"), 
 "url" : "someurl" , 
 "terms" : [{"name" : "name1" , "frequency" : 17},
            {"name" : "name2" , "frequency" : 42}]}

نصائح أخرى

إذا لم تتمكن من التنبؤ بكيفية تنظيم بياناتك، فربما http://couchdb.Apache.org/ يمكن أن تكون مثيرة للاهتمام بالنسبة لك.إنها قاعدة بيانات بدون مخطط.

على أية حال، ربما لا يكون XML هو الخيار الأفضل لكمية كبيرة من البيانات.

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

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

وحتى في هذه الحالة، يمكنك الاحتفاظ بملف XML الكبير، وإنشاء الملفات الأصغر حجمًا من مجموعة البيانات الأصلية عند الطلب.

إن استخدام قاعدة بيانات مثل SQLite3 سيسمح لك بالحصول على أوقات بحث أسرع ومعالجة أسهل للبيانات، باستخدام بناء جملة SQL.

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