تخزين بيانات السلاسل الزمنية الضخمة المطلوبة في مشتقات Bigtable

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

سؤال

أحاول أن أعرف بالضبط ماهية مخازن البيانات الجديدة مثل bigtable وhbase وcassandra.

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

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

تدعي بعض هذه الأنظمة (كاساندرا، على سبيل المثال) أنها قادرة على إجراء استعلامات النطاق.هل سأكون قادرًا على الاستعلام بكفاءة، على سبيل المثال، عن جميع قيم MSFT، ليوم معين، بين الساعة 11:00 صباحًا و1:30 مساءً؟

ماذا لو كنت أرغب في البحث عبر جميع الرموز ليوم معين، وطلب جميع الرموز التي يتراوح سعرها بين 10 دولارات و10.25 دولارات (لذلك فأنا أبحث عن القيم، وأريد إرجاع المفاتيح نتيجة لذلك)؟

ماذا لو أردت الحصول على متسلسلتين زمنيتين، وطرح إحداهما من الأخرى، وإرجاع المتسلسلتين الزمنيتين ونتيجتهما، هل يجب أن أقوم بمنطقه في برنامجي الخاص؟

يبدو أن قراءة الأوراق ذات الصلة تظهر أن هذه الأنظمة ليست مناسبة تمامًا لأنظمة السلاسل الزمنية الضخمة.ومع ذلك، إذا كانت أنظمة مثل خرائط جوجل تعتمد عليها، فأعتقد أن السلاسل الزمنية يجب أن تعمل أيضًا.على سبيل المثال، فكر في الوقت كمحور س، والأسعار كمحور ص، والرموز كمواقع محددة - فجأة يبدو أن Bigtable يجب أن يكون المتجر المثالي للسلاسل الزمنية (إذا كان من الممكن تخزين الأرض بأكملها، واسترجاعها ، مكبرة ومشروحة، يجب أن تكون بيانات سوق الأوراق المالية تافهة).

هل يمكن لبعض الخبراء توجيهي في الاتجاه الصحيح أو توضيح أي سوء فهم.

شكرًا

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

المحلول

انا لست خبير حتى الآن، ولكنني ألعب مع كاساندرا منذ بضعة أيام، ولدي بعض الإجابات لك:

  1. لا تقلق بشأن كمية البيانات، فهي غير ذات صلة بأنظمة مثل Cassandra، إذا كان لديك $$$ لمجموعة كبيرة من الأجهزة.

تدعي بعض هذه الأنظمة (كاساندرا، على سبيل المثال) أنها قادرة على إجراء استعلامات النطاق.هل سأكون قادرًا على الاستعلام بكفاءة، على سبيل المثال، عن جميع قيم MSFT، ليوم معين، بين الساعة 11:00 صباحًا و1:30 مساءً؟

تعد Cassandra مفيدة جدًا عندما تعرف كيفية العمل باستخدام المفاتيح.يمكن أن يمر عبر المفاتيح بسرعة كبيرة.لذا، للبحث عن MSFT بين الساعة 11:00 و1:30 ظهرًا، يجب عليك إدخال صفوفك على النحو التالي:

msft-timestamp ، goog-timestamp ، ..etc ثم يمكنك إخبار كاساندرا بالعثور على جميع المفاتيح التي تبدأ بـ msft-now وتنتهي بـ msft-now+1hour.

ماذا لو كنت أرغب في البحث عبر جميع الرموز ليوم معين، وطلب جميع الرموز التي يتراوح سعرها بين 10 دولارات و10.25 دولارات (لذلك فأنا أبحث عن القيم، وأريد إرجاع المفاتيح نتيجة لذلك)؟

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

ماذا لو أردت الحصول على متسلسلتين زمنيتين، وطرح إحداهما من الأخرى، وإرجاع المتسلسلتين الزمنيتين ونتيجتهما، هل يجب أن أقوم بمنطقه في برنامجي الخاص؟

صحيح، كل المنطق يتم داخل برنامجك.هذه ليست الخلية.هذا مجرد محرك تخزين.(لكنني متأكد من أن الإصدارات القادمة ستقدم هذا النوع من الأشياء)

أرجو أن تتذكروا أنني مبتدئ في هذا الأمر، إذا كنت مخطئا، فلا تتردد في تصحيحي.

نصائح أخرى

إذا كنت تتعامل مع قاعدة بيانات ضخمة للسلاسل الزمنية، فإن المعايير هي:

هذه ليست رخيصة الثمن، لكنها يمكنها التعامل مع بياناتك بكفاءة عالية.

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

http://opentsdb.net/

'أقف أمام نفس الجبل. مشكلتي الرئيسية مع كاساندرا هي أنني لا يمكن الحصول على تيار على مجموعة النتائج، مثلا في شكل مكرر.

وأنا أبحث بالفعل صعودا وهبوطا المستندات والنت، ولكن لا شيء.

وأنا لا يمكن أن تجلب كل المفاتيح ومن ثم الحصول على الصفوف كما مليارات الصفوف يجعل ذلك مستحيلا.

.

والسائق DataStax جافا يسمح لترحيل تلقائي بحيث تيار النتائج تماما مثل مكرر وانها مبنية في هذا في كاساندرا 2.0.1 بالمناسبة - <وأ href = "HTTP: //www.datastax كوم / ديف / بلوق / العميل جنبا إلى تحسينات في كاساندرا-2-0 "يختلط =" نوفولو "> http://www.datastax.com/dev/blog/client-side-improvements-in-cassandra -2-0

فقط من أجل اكتمال قراءة هذا في عام 2018، توجد الآن قاعدة بيانات خاصة لبيانات السلاسل الزمنية فقط تسمى TimescaleDB

http://www.timescale.com/

هذه المدونة تستحق القراءة، فهي تشرح سبب تفوقها على حلول مثل Cassandra لهذه الحالة الخاصة ولماذا قرروا بنائها فوق قاعدة بيانات PostgreSQL العلائقية

https://blog.timescale.com/time-series-data-why-and-how-to-use-a-relational-database-instead-of-nosql-d0cd6975e87c

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