> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> توثيق ClickHouse Obfuscator

# clickhouse-obfuscator

أداة بسيطة لتمويه بيانات الجدول.

تقرأ جدول إدخال وتنتج جدول إخراج يحتفظ ببعض خصائص بيانات الإدخال، لكنه يحتوي على بيانات مختلفة.
وتتيح نشر بيانات production حقيقية تقريبًا لاستخدامها في اختبارات الأداء.

وقد صُممت للاحتفاظ بخصائص البيانات التالية:

* الكاردينالية للقيم (عدد القيم المميزة) لكل عمود ولكل tuple من الأعمدة؛

* الكاردينالية الشرطية: عدد القيم المميزة في عمود واحد بشرط قيمة عمود آخر؛

* توزيعات احتمالات القيمة المطلقة للأعداد الصحيحة؛ وإشارة الأعداد الصحيحة الموقعة؛ والأسّ والإشارة للأعداد العائمة؛

* توزيعات احتمالات أطوال السلاسل النصية؛

* احتمال القيم الصفرية للأعداد؛ والسلاسل النصية الفارغة والمصفوفات، وقيم `NULL`؛

* نسبة ضغط البيانات عند ضغطها باستخدام LZ77 وعائلة codecs القائمة على الإنتروبيا؛

* الاستمرارية (مقدار الفرق) لقيم الوقت عبر الجدول؛ واستمرارية القيم ذات الفاصلة العائمة؛

* مكوّن التاريخ في قيم `DateTime`؛

* صحة ترميز UTF-8 في قيم السلاسل النصية؛

* أن تبدو قيم السلاسل النصية طبيعية.

معظم الخصائص المذكورة أعلاه مناسبة لاختبارات الأداء:

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

وهي تعمل بطريقة حتمية: تحدد قيمة seed، ويُحدَّد التحويل استنادًا إلى بيانات الإدخال وإلى seed.
وبعض التحويلات تكون واحدًا لواحد ويمكن عكسها، لذا تحتاج إلى seed كبير وإبقائه سرًا.

وتستخدم بعض primitives التشفيرية لتحويل البيانات، لكنها من المنظور التشفيري لا تنفّذ ذلك على نحو صحيح، لذلك لا ينبغي اعتبار النتيجة آمنة ما لم يكن لديك سبب آخر. وقد تحتفظ النتيجة ببعض البيانات التي لا تريد نشرها.

وهي تترك دائمًا الأعداد 0 و1 و-1، والتواريخ، وأطوال المصفوفات، وعلامات null كما هي تمامًا في البيانات المصدر.
فعلى سبيل المثال، إذا كان لديك عمود `IsMobile` في جدولك بقيمتي 0 و1، فستكون له القيمة نفسها في البيانات المحوّلة.

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

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

لا تعمل هذه الأداة جيدًا إلا مع كمية بيانات لا تقل عن حدٍّ متوسط (على الأقل آلاف الصفوف).
