الإجابة المختصرة هي «نعم». يوفّر ClickHouse عدة آليات تتيح تحرير مساحة على القرص عبر إزالة البيانات القديمة. وكل آلية منها مخصّصة لسيناريوهات مختلفة.
TTL
يتيح ClickHouse حذف القيم تلقائيًا عند تحقق شرط معيّن. ويُضبط هذا الشرط كتعبير يعتمد على أي عمود، وغالبًا ما يكون مجرد فارق زمني ثابت لعمود طابع زمني.
الميزة الأساسية لهذا النهج هي أنه لا يحتاج إلى أي نظام خارجي لتحفيزه؛ فبمجرد إعداد TTL، تتم إزالة البيانات تلقائيًا في الخلفية.
مزيد من التفاصيل حول إعداد TTL.
DELETE FROM
يتيح DELETE FROM تشغيل استعلامات DELETE القياسية في ClickHouse. تُعلَّم الصفوف المستهدفة في شرط التصفية على أنها محذوفة، وتُستبعد من مجموعات النتائج المستقبلية. وتتم إزالة هذه الصفوف بشكل غير متزامن.
ALTER DELETE
يزيل ALTER DELETE الصفوف باستخدام عمليات مجمّعة غير متزامنة. وعلى خلاف DELETE FROM، فإن الاستعلامات التي تُنفَّذ بعد ALTER DELETE وقبل اكتمال العمليات المجمّعة ستظل تتضمن الصفوف المستهدفة بالحذف. لمزيد من التفاصيل، راجع وثائق ALTER DELETE.
يمكن إصدار ALTER DELETE لإزالة البيانات القديمة بمرونة. وإذا كنت بحاجة إلى القيام بذلك بانتظام، فسيكون العيب الرئيسي هو الحاجة إلى نظام خارجي لإرسال الاستعلام. وهناك أيضًا بعض الاعتبارات المتعلقة بالأداء، لأن عمليات mutation تعيد كتابة الأجزاء كاملةً حتى إذا كان المطلوب حذف صف واحد فقط.
هذا هو النهج الأكثر شيوعًا لجعل نظامك المستند إلى ClickHouse متوافقًا مع GDPR.
مزيد من التفاصيل حول mutations.
حذف قسم
يوفّر ALTER TABLE ... DROP PARTITION طريقة فعّالة من حيث التكلفة لحذف قسم بأكمله. ورغم أنه ليس مرنًا جدًا، ويتطلّب إعداد مخطط تقسيم مناسب عند إنشاء الجدول، فإنه لا يزال يغطي معظم الحالات الشائعة. وكما هو الحال مع mutations، يجب تنفيذ هذا الإجراء من نظام خارجي عند الاستخدام المنتظم.
مزيد من التفاصيل حول إدارة الأقسام.
TRUNCATE
تُعد إزالة جميع البيانات من جدول خطوة جذرية إلى حدٍّ ما، لكنها قد تكون في بعض الحالات ما تحتاج إليه تمامًا.
مزيد من التفاصيل حول تفريغ الجدول.