كم سيستغرق تصدير البيانات إلى ClickHouse؟
| الجدول | عدد الصفوف | الملفات المُصدَّرة | حجم البيانات | التصدير من BigQuery | زمن الـ Slot | الاستيراد إلى ClickHouse |
|---|---|---|---|---|---|---|
| الكتل | 16,569,489 | 73 | 14.53GB | 23 secs | 37 min | 15.4 secs |
| المعاملات | 1,864,514,414 | 5169 | 957GB | 1 min 38 sec | 1 day 8hrs | 18 mins 5 secs |
| التتبعات | 6,325,819,306 | 17,985 | 2.896TB | 5 min 46 sec | 5 days 19 hr | 34 mins 55 secs |
| العقود | 57,225,837 | 350 | 45.35GB | 16 sec | 1 hr 51 min | 39.4 secs |
| الإجمالي | 8.26 billion | 23,577 | 3.982TB | 8 min 3 sec | > 6 days 5 hrs | 53 mins 45 secs |
تصدير بيانات الجدول إلى GCS
في هذه الخطوة، نستخدم مساحة عمل BigQuery SQL لتنفيذ أوامر SQL. في المثال أدناه، نُصدّر جدولًا في BigQuery باسمmytable إلى حاوية GCS باستخدام عبارة EXPORT DATA.* في المعلمة uri. وهذا يضمن تقسيم الناتج إلى عدة ملفات، مع لاحقة رقمية متزايدة، إذا تجاوز التصدير 1GB من البيانات.لهذا النهج عدد من المزايا:- تتيح Google تصدير ما يصل إلى 50TB يوميًا إلى GCS مجانًا. ولا يدفع المستخدمون سوى مقابل تخزين GCS.
- تُنتج عمليات التصدير ملفات متعددة تلقائيًا، مع تقييد كل ملف بحد أقصى قدره 1GB من بيانات الجدول. وهذا مفيد لـ ClickHouse لأنه يتيح تنفيذ عمليات الاستيراد بالتوازي.
- يُعد Parquet، بوصفه تنسيقًا موجَّهًا بالأعمدة، تنسيقًا أفضل لتبادل البيانات لأنه مضغوط بطبيعته، كما أنه أسرع بالنسبة إلى BigQuery عند التصدير وClickHouse عند تنفيذ الاستعلامات
استيراد البيانات إلى ClickHouse من GCS
بمجرد اكتمال التصدير، يمكننا استيراد هذه البيانات إلى جدول في ClickHouse. يمكنك استخدام وحدة تحكم ClickHouse SQL أوclickhouse-client لتنفيذ الأوامر أدناه.يجب أولاً إنشاء الجدول في ClickHouse:parallel_distributed_insert_select إذا كان لديك عدة نُسخ متماثلة من ClickHouse في الـcluster لتسريع عملية التصدير. وإذا كانت لديك عقدة ClickHouse واحدة فقط، فيمكنك تخطي هذه الخطوة:INSERT INTO SELECT، الذي يُدرج البيانات في جدول استنادًا إلى نتائج استعلام SELECT.لاسترجاع البيانات من أجل INSERT، يمكننا استخدام دالة s3Cluster لجلب البيانات من حاوية GCS، لأن GCS متوافق مع Amazon S3. إذا كانت لديك عقدة ClickHouse واحدة فقط، فيمكنك استخدام دالة الجدول S3 بدلًا من الدالة s3Cluster.ACCESS_ID وSECRET المستخدمَين في الاستعلام أعلاه مفتاح HMAC المرتبط بحاوية GCS الخاصة بك.استخدم
ifNull عند تصدير الأعمدة من النوع Nullableفي الاستعلام أعلاه، نستخدم الدالة ifNull مع العمود some_text لإدراج البيانات في جدول ClickHouse مع قيمة افتراضية. يمكنك أيضًا جعل أعمدتك في ClickHouse من النوع Nullable، لكن لا يُنصح بذلك لأنه قد يؤثر سلبًا في الأداء.بدلاً من ذلك، يمكنك ضبط SET input_format_null_as_default=1، وعندها ستُستبدل أي قيم مفقودة أو NULL بالقيم الافتراضية للأعمدة المقابلة، إذا كانت تلك القيم الافتراضية محددة.اختبار نجاح تصدير البيانات
لاختبار ما إذا كانت بياناتك قد أُدرجت بشكل صحيح، ما عليك سوى تنفيذ استعلامSELECT على جدولك الجديد: