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

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

  •  21-12-2019
  •  | 
  •  

سؤال

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

لذلك قمت بإعداد كاساندرا (حاليا عقدة واحدة ، وربما أكثر في المستقبل) مع الجدول التالي

CREATE TABLE cache (tag text, id int, tags map<text,text>, 
  PRIMARY KEY (tag, id) );
ALTER TABLE cache WITH GC_GRACE_SECONDS = 0;

أنا إدراج مع تل من أسبوع واحد لإزالة العناصر تلقائيا من ذاكرة التخزين المؤقت.

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

SELECT * FROM cache WHERE tag = ? AND id >= ?

المعرف هو في الأساس نوع من الطابع الزمني الذي يتزايد باستمرار ، أي.أقوم فقط بإدراج قيم أعلى بمرور الوقت وأزيل باستمرار المعرفات القديمة من الجدول.

لكن ما زلت أتلقى تحذيرات بشأن الوصول إلى العتبات

WARN 08:59:06,286 Read 5001 live and 5702 tombstoned cells in cache (see tombstone_warn_threshold)

وإذا لم أقم بتشغيل الضغط اليدوي / التنظيف بانتظام ، أحصل على استثناءات وتفشل الاستعلامات.

ولكن بناء على فهمي من المقالات والوثائق, يجب أن أتجنب معظم شواهد القبور إن لم يكن كلها هنا وأنا أستفسر عن المساواة للعلامة, مما يسمح لكاساندرا بالبحث فقط عن تلك المناطق وأستخدم الحد الأدنى من المعرف الذي يسمح لكاساندرا ببدء القراءة فقط بعد معظم شواهد القبور, فلماذا لا تزال هناك تحذيرات/استثناءات علامة مميزة تم الإبلاغ عنها?

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

المحلول

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

ثانيا ، يتم ضرب هذا في > = المسند في استعلام التحديد الخاص بك.

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

لذلك ، إذا كنت لا تصدر الكثير من الحذف على تلك الخريطة ، يمكنك محاولة استخدام tag text, time timeuuid, name text, data text نموذج وشريحة على وجه التحديد من قبل الوقت.

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