سياسات الإبقاء والاحتفاظ
1) المبادئ
1. الغرض والتقليل. نحن نخزن ذلك بالضبط وبالقدر الذي نحتاجه لأغراض المعالجة.
2. السياسة كمدونة. الاحتفاظ هو سياسة قابلة للتنفيذ، وليس PDF.
3. الدفاع في العمق. TTL/ILM + تشفير + تدقيق + عقد قانوني.
4. العكس والإثبات. يمكن التحقق من الحذف: سجلات العمل، تمزيق التشفير، تقرير الامتثال.
5. التكلفة والكربون الواعي. يأخذ الاحتفاظ في الاعتبار الدولار/شهر جيجابايت والبصمة الكربونية للتخزين/الخروج.
2) تصنيف البيانات و «خريطة ريتنشن»
تقسيم المجموعات إلى فئات ذات أهداف وأسس قانونية:- التشغيل (OLTP): الأوامر والمدفوعات والدورات.
- تحليلي (DWH/التواريخ): الأحداث، حقائق السجل، الشرائح.
- الشخصية (PII/finance/health): تتطلب شروطا وحقوق خاصة للمواضيع.
- تقنية: سجلات، مقاييس، مسارات، قطع أثرية CI.
- الوثائق/وسائط الإعلام: WORM/archive/legasi.
لكل فئة، تم تحديدها: المالك والغرض والإطار القانوني والتواريخ ومستوى الحماية والتخزين الحالي والمستهدف.
3) دورة حياة بيانات ILM
الناقل النموذجي:1. تناول (ساخن) → NVMe/SSD، معدل طلب مرتفع.
2. دافئ → أقل قراءة، الضغط، تنسيقات الأعمدة.
3. بارد/أرشيف → كائن/شريط، وصول طويل.
4. تطهير/حذف → حذف مضمون (بما في ذلك النسخ المتماثلة/النسخ الاحتياطية).
مثال على موجز ILM (YAML):yaml dataset: events_main owner: analytics purpose: "product analytics"
classification: "pseudonymized"
lifecycle:
- phase: hot; duration: 7d; storage: nvme; format: row
- phase: warm; duration: 90d; storage: ssd; format: parquet; compress: zstd
- phase: cold; duration: 365d; storage: object; glacier: true
- phase: purge; duration: 0d privacy:
pii: false dp_delete_window: 30d # SLA on personal deletions if ligaments appear
4) السياسات كرمز (رسومات مفيدة)
4. 1 سياسة القبول (العلامات المطلوبة/TTL)
yaml policy: require-retention-tags deny_if_missing: [owner, purpose, classification, retention]
default_retention:
logs: "30d"
traces: "7d"
metrics:"90d"
4. البوابة 2 في CI/CD (Rego) - حظر الانتشار دون إبعاد
rego package policy. retention deny[msg] {
some d input. datasets[d].retention == ""
msg:= sprintf("Retention missing for dataset %s", [d])
}
4. 3 S3/object (جزء دورة الحياة)
yaml
Rules:
- ID: logs-ttl
Filter: { Prefix: "logs/" }
Transitions:
- { Days: 7, StorageClass: STANDARD_IA }
- { Days: 30, StorageClass: GLACIER }
Expiration: { Days: 180 }
NoncurrentVersionExpiration: { NoncurrentDays: 30 }
5) الاحتفاظ في الخيوط وقوائم الانتظار
كافكا:- الاحتفاظ. '/' الاحتفاظ. بايتس - الاحتفاظ بالنافذة.
- ضغط ('تنظيف. policy = compact ') - تخزين آخر قيمة رئيسية.
- التخزين المتدرج - نأخذ «الذيل» إلى معرض إطلاق نار بارد.
- DLQ هو احتفاظ منفصل و TTL.
properties cleanup. policy=delete,compact retention. ms = 604800000 # 7d for tail removal
min. cleanable. dirty. ratio=0. 5 segment. ms=86400000
الضمانات:
- تحديد موضوع الاحتفاظ ≈ نافذة أعمال إعادة/إعادة الحساب.
- بالنسبة لأحداث الفواتير/مراجعة الحسابات، احتفاظ منفصل طويل أو WORM.
6) قواعد البيانات والاحتفاظ بها
علائقية:- التقسيم حسب التاريخ/النطاق، فصل وإسقاط الحفلات القديمة.
- حقول التاريخ - فهارس طلبات TTL.
- الجداول الزمنية (تم تعريفها بالنظام) + سياسات التطهير من الإصدارات القديمة.
sql
-- Monthly instalments
CREATE TABLE audit_events (id bigserial, occurred_at timestamptz, payload jsonb) PARTITION BY RANGE (occurred_at);
-- Cleaning over 365 days
DELETE FROM audit_events WHERE occurred_at < now() - interval '365 days';
VACUUM (FULL, ANALYZE) audit_events;
NoSQL/Time-series:
- TTL على المستوى الرئيسي (مؤشر MongoDB TTL، Redis 'EXPIRE'، Cassandra TTL).
- تقليل الحجم للمقاييس (الخام 7 د → يبلغ مجموعها 90 د → 365 د).
- سياسات الاحتفاظ في TSDB (التأثير/ClickHouse الآراء الموضوعية مع التخلص/التجميع).
7) السجلات والمقاييس والمسارات
Logs: limited fields, mask PD, TTL 7-30d, archive 90-180d.
المقاييس: التردد العالي الخام - 7-14 د ؛ العينة السفلية (5 م/1 ساعة) - 90 - 365д.
المسارات: أخذ عينات من الذيل والحفاظ على «مثير للاهتمام» (الأخطاء/الذيول) لفترة أطول.
yaml observability:
logs: { ttl: "30d", archive: "90d", pii_mask: true }
metrics: { raw: "14d", rollup_5m: "90d", rollup_1h: "365d" }
traces: { sample: "tail-10%", ttl: "7d", error_ttl: "30d" }
8) الإزالة: الأنواع والضمانات
المنطقي (الحذف الرقيق): وضع علامة على السجل ؛ مناسب للاسترداد، لا يناسب «الحق في الحذف».
مادي (حذف صلب) - الحذف الفعلي للبيانات/النسخ/النسخ المتماثلة.
التشفير (محو التشفير): حذف/استبدال مفاتيح التشفير، وبعد ذلك لا يتم استعادة البيانات.
Cascade: حذف المشتقات من طرف إلى طرف (المخابئ والفهارس والتحليلات).
request → locate subject data (index by subject_id) → revoke tokens & unsubscribe jobs → delete in OLTP → purge caches → enqueue erasure in DWH/lakes → crypto-shred keys (per-tenant/per-dataset) → emit audit proof (receipt)
9) الحق في الإزالة والعقد القانوني والاكتشاف الإلكتروني
الحق في حذف/تصحيح: طلب التنفيذ (على سبيل المثال، ≤30 أيام)، والإجراءات المتبعة، والإيصالات.
الحجز القانوني: بناء على طلب قانوني - تجميد الحذف للمجموعات/المفاتيح المحددة ؛ على TTL.
eDiscovery: datalog, full-text/سمة البحث عن القطع الأثرية، التصدير في أشكال متسقة.
yaml legal_hold:
dataset: payments scope: ["txn_id:123", "user:42"]
from: "2025-10-31"
until: "2026-03-31"
reason: "regulatory investigation"
10) النسخ الاحتياطية مقابل الأرشيف مقابل WORM
النسخ الاحتياطية - للاسترداد من الخسارة/التلف ؛ توقف قصير، سريع RTO.
المحفوظات - الاحتفاظ على المدى الطويل لمراجعة الحسابات/التحليلات، الوصول الرخيص الطويل.
WORM - وسائط ثابتة للامتثال (التمويل/الإبلاغ) ؛ سياسات «الكتابة مرة واحدة، قراءة الكثير».
- لا تحسب النسخة الاحتياطية على أنها «أرشيف لقرون».
- بروفات التعافي (أيام DR)، تقرير الوقت والاكتمال.
- دليل النسخ الاحتياطية مع الاحتفاظ والتشفير والمفاتيح بشكل منفصل عن التخزين.
11) الخصوصية وإخفاء الهوية
التسمية المستعارة: تأخر PII في الربط عبر جدول المفاتيح (يسمح بمحو التشفير حسب المفتاح).
إخفاء الهوية: تقنيات لا رجعة فيها (عدم الكشف عن الهوية، الضجيج، التعميم) ؛ طريقة المستندات، خطر إعادة تحديد الهوية وتاريخ انتهاء الصلاحية.
12) رصد الامتثال والإبلاغ عنه
لوحات التحكم: نسبة مجموعات البيانات مع الاحتفاظ الصالح، الأحجام حسب مراحل ILM، أخطاء الحذف.
التنبيهات: تجاوز الحجم المستهدف في اندفاعة ساخنة، تنتهي صلاحية الحذف «المعلق».
التقارير: مراجعة الحذف الشهري (عدد الطلبات، متوسط المدة، الإخفاقات)، طباعة تمزيق التشفير.
13) الإدماج في العمليات: البوابات والاستعراضات
بوابة التصميم: لا تحصل مجموعة البيانات الجديدة على مراجعة بدون «المالك/الغرض/الاحتفاظ».
بوابة الإفراج: يتم حظر الهجرات التي تزيد من الاحتفاظ بها دون مالك/مبرر.
بوابة التكلفة: الحجم بالحجم الساخن/الدافئ يتجاوز الميزانية - سبب تشديد ILM.
بوابة الأمن: حظر إدراج PD في السجلات/المسارات دون تنكر و TTL.
14) الأنماط المضادة
«نحتفظ بكل شيء إلى الأبد - سيكون فجأة في متناول اليد».
TTLs المشفرة بشدة في التطبيقات غير المقدمة في السياسات.
PD في جذوع الأشجار والآثار دون إخفاء/TTL/حذف.
حذف غير كامل (ترك في المخبأ/DWH/النسخ الاحتياطية).
عدم وجود تعليق قانوني - محو البيانات قيد التحقيق.
مفتاح تشفير واحد شائع لكل شيء - من المستحيل الإشارة إلى «محو التشفير».
عدم إمكانية الملاحظة: «نعتقد أننا أزلنا»، لكن لا يوجد دليل.
15) قائمة مرجعية للمهندس المعماري
1. لكل مجموعة بيانات يوجد مالك، الغرض، التصنيف، الاحتفاظ، مستوى التخزين ؟
2. هل يتم الإعلان عن سياسات ILM/TTL كرمز وتطبيقها تلقائيًا ؟
3. وتقنع وحدات الشرطة في سجلات/مسارات ؛ محظورة خارج المجموعات «البيضاء» ؟
4. هل هناك عمليات حذف شخصية (جيش تحرير السودان، مراجعة الحسابات، الإيصالات) ؟
5. محو التشفير ممكن (لكل مستأجر/لكل مفاتيح مجموعة بيانات، KMS/التناوب) ؟
6. النسخ الاحتياطية: الجدول الزمني، التشفير، اختبارات الاسترداد، المفاتيح الفردية ؟
7. Hold/eDiscovery القانوني: مدعوم، تغلب على TTL، سجلات النشاط المحفوظة ؟
8. كافكا/قوائم الانتظار: الاحتفاظ/الضغط/الترتيب المحدد، DLQ لديها سياسات منفصلة ؟
9. المقاييس والتنبيهات للامتثال لـ Retenschen وأحجام صالات التصوير مهيأة ؟
10. هل المراجعات والبوابات في SDLC تحجب القطع الأثرية بدون Retenschen ؟
16) وصفات صغيرة
16. 1 ClickHouse: «قطع الذيل» على مدار 180 يومًا
sql
ALTER TABLE events DELETE WHERE event_date < today() - 180;
OPTIMIZE TABLE events FINAL;
16. 2 Redis: TTL и تطهير كسول
bash
SET session:123 value EX 3600
CONFIG SET maxmemory-policy allkeys-lru
16. 3 أخذ عينات من الذيل للمسارات
yaml tail_sampling:
policies:
- name: keep-errors-and-slow latency_threshold_ms: 500 status_codes: ["5xx"]
rate_limit_per_min: 5000 default_ttl: "7d"
16. 4 محو التشفير (فكرة)
keys:
dataset: users_pii key_id: kms://pii/users/tenant-42 erase(user_id=42):
rotate_or_destroy (key_id) # inability to restore former purge_indexes blocks ("user _ id = 42")
audit("crypto-erasure", user_id)
استنتاج
سياسات الاحتفاظ هي «الهيكل العظمي» لمنصة البيانات الخاصة بك: فهي تصف المدة التي تعيش فيها فئات مختلفة من البيانات، وأين هي في كل لحظة، وكيف تصبح أرخص بمرور الوقت، ومتى تختفي دون أثر - بشكل قانوني وشفاف، ويمكن التحقق منه. اجعل الاحتفاظ سياسة مثل الكود، وربط ILM بالأمان والتكلفة، وتمكين الملاحظة والبوابات - وستحصل على نظام فعال ومتوافق وجاهز للنمو.