استيقظت في منتصف الليل بسبب خلل في البيانات مرة أخرى، هل سبق لك أن حلمت بعالم بيانات مثالي حيث تعود الاستفسارات في ثوانٍ، والبيانات لا تضيع أبدًا، والتكاليف منخفضة لدرجة أن رئيسك يبتسم؟ يبدو وكأنه حلم؟ لا! هذا يصبح واقعًا.
تذكر تلك الليلة التي تم فيها سحقك بمشاكل تقسيم البيانات، حيث كان مدير المنتج يحث بجنون على التقدم بينما كنت تكافح مع البيانات المبعثرة؟ كانت استعلامات متعددة المصادر بطيئة كالحلزون يتسلق الجبل، وتتطلب تغييرات النمط تنسيقًا عبر سبعة أقسام.
لكن الآن، يتم إعادة كتابة هذه النقاط المؤلمة.
تعيد مزيج Apache Doris و Iceberg تعريف كيفية عمل بحيرات البيانات. إنها ليست مجرد عملية بسيطة 1+1=2؛ بل تجلب قفزة نوعية: استعلامات من المستوى الثاني، وتطور نمط سلس، وضمانات حقيقية لتوحيد البيانات.
السيمفونية المثالية لدوريس و Iceberg
في مجال هندسة البيانات، نواجه غالبًا مثل هذه المشاكل:
يعمل شياو زهانغ على متطلبات تحليل البيانات، حيث يحتاج إلى تحليل بيانات سلوك المستخدمين منذ ثلاثة أشهر. تنتشر البيانات عبر مستودعات بيانات Hive وقواعد بيانات تجارية وتخزين الكائنات. أداء الانضمام عبر مصادر متعددة سيء، حيث تأخذ الاستعلامات أكثر من 40 دقيقة، ويحدث عدم اتساق البيانات في كثير من الأحيان.
علاوة على ذلك، يجب على شياو زهانغ أيضًا التعامل مع أعمال حوكمة البيانات، وكل تغيير في هيكل الجدول يسبب له صداعًا. تعتمد تطبيقات التيار الهابط المتعددة على هذه الجداول، وتتطلب تغييرات النمط تنسيقًا عبر فرق متعددة، مما قد يستغرق أسبوعًا لإكمال تغيير واحد.
تصبح هذه المشاكل أكثر بروزًا مع النمو الانفجاري للبيانات. لم يعد الفصل التقليدي بين مستودعات البيانات والبحيرات البيانية يمكن أن يلبي الاحتياجات.
لحسن الحظ، في الإصدار 2.1، هندسة بيت البيانات لـ Apache Doris تم تعزيزها بشكل كبير. إذ أنها لا تحسن فقط قدرات القراءة والكتابة لتنسيقات بحيرة البيانات الرئيسية (Hudi، Iceberg، Paimon، إلخ) ولكنها تقدم أيضًا توافق متعدد للهياكل اللغوية SQL، مما يسمح بالانتقال السلس من الأنظمة الحالية إلى Apache Doris. في علوم البيانات وسيناريوهات قراءة البيانات بمقياس كبير، تدمج Doris واجهة القراءة عالية السرعة Arrow Flight، مما يحقق تحسينًا بنسبة 100 مرة في كفاءة نقل البيانات.
وبالتالي، قررت شياو زانغ استخدام Doris + Iceberg لاسترداده.
يوفر Apache Doris الدعم الأصلي للعديد من الميزات الأساسية لـ Iceberg:
- يدعم أنواع فهرسة Iceberg المختلفة مثل Hive Metastore، Hadoop، REST، Glue، Google Dataproc Metastore، و DLF.
- يدعم بشكل أصلي تنسيقات الجدول Iceberg V1/V2، بالإضافة إلى قراءة ملفات الحذف بالموقع وملفات الحذف المتساوية.
- يدعم الاستعلام عن تاريخ الجدول في Iceberg من خلال وظائف الجدول.
- يدعم وظيفة السفر عبر الزمن.
- يدعم بشكل أصلي محرك جدول Iceberg. يمكن لـ Apache Doris إنشاء وإدارة وكتابة البيانات مباشرةً في جداول Iceberg. يدعم مجموعة كاملة من وظائف تحويل التقسيم، مما يوفر قدرات مثل التقسيمات المخفية وتطور تخطيط التقسيم.
بالإضافة إلى ذلك، جلبت النسخة 2.1.6 من Doris ترقيات كبيرة لـ Doris + Iceberg:
يدعم Apache Doris عمليات DDL وDML على Iceberg. يمكن للمستخدمين إنشاء قواعد بيانات وجداول مباشرةً في Iceberg من خلال Apache Doris وكتابة البيانات في جداول Iceberg.
من خلال هذه الميزة، يمكن للمستخدمين إجراء استعلامات بيانات كاملة وعمليات كتابة على Iceberg باستخدام Apache Doris، مما يبسط بشكل أكبر عمارة البيانات الخاصة بـ lakehouse.
بالتالي، يمكن لـ شياو زانغ بناء حلاً فعالاً لـ lakehouse بناءً على Apache Doris + Apache Iceberg لتلبية بشكل مرن متطلبات مختلفة لتحليل البيانات ومعالجتها في الوقت الحقيقي:
- استخدام محرك الاستعلام عالي الأداء لـ Doris للانضمام وتحليل البيانات من جداول Iceberg ومصادر البيانات الأخرى، بناء منصة موحدة لتحليل البيانات الموحدة.
- إدارة وبناء جداول Iceberg مباشرةً في Doris، تنظيف ومعالجة البيانات، وكتابتها في جداول Iceberg، بناء منصة موحدة لمعالجة البيانات في lakehouse.
- مشاركة بيانات Doris مع أنظمة التشغيل الأمامية والخلفية الأخرى لمزيد من المعالجة من خلال محرك جدول Iceberg، بناء منصة تخزين بيانات مفتوحة موحدة.
هذا لم يعد مجرد تكامل سطحي بل اندماج عميق لبنيات lakehouse!
ملخص عملي لـ Doris و Iceberg
بعد سلسلة من التقلبات في الاستكشاف والممارسة، قام شياو زانغ بتلخيص بعض التجارب العملية مع Doris + Iceberg:
إدارة البيانات الوصفية الذكية
في الحلول التقليدية، كانت إدارة البيانات الوصفية دائمًا مشكلة صعبة. تكون معلومات تقسيم الجداول، ومواقع الملفات، وتاريخ تغيير النطاقات منتشرة في كل مكان، مما يؤدي إلى أداء استعلام ضعيف وعمليات وصيانة معقدة.
يوفر Doris + Iceberg طبقة إدارة بيانات وصفية موحدة:
هذه البنية المعمارية تجلب العديد من القيم الرئيسية:
- تطور النطاق المتسلسل: لم يعد تغيير هيكل الجدول يتطلب توقف النظام. Doris + Iceberg يدعم إضافة وحذف وتعديل الحقول، بالإضافة إلى ضبط طرق التقسيم.
- إدارة نسخ البيانات: من خلال آلية اللقطة في Iceberg، يمكنك العودة إلى حالة البيانات في أي نقطة زمنية.
- خدمة الكتالوج الموحدة: تدعم أنواع كتالوج Iceberg المختلفة مثل Hive Metastore، Hadoop، REST، Glue، Google Dataproc Metastore، و DLF، متكاملة بسلاسة مع البنية التحتية الحالية.
يمكن لشياو زانغ الآن إتمام تغييرات النطاق ببيان ALTER TABLE واحد. يتعامل النظام تلقائيًا مع التوافق، وتظل التطبيقات الفرعية غير عابئة بالتغييرات.
تنظيم البيانات بكفاءة
تجمع دوريس بشكل مبتكر بين محرك MPP وطرق تنظيم البيانات في Iceberg:
-- Create a partitioned Iceberg table
-- Partition columns must be in the table's column definition list
CREATE TABLE sales (
ts DATETIME,
user_id BIGINT,
amount DOUBLE,
pt1 STRING,
pt2 STRING
) ENGINE=iceberg
-- Iceberg's partition type corresponds to List partitioning in Doris
PARTITION BY LIST (DAY(ts), pt1, pt2) ()
PROPERTIES (
-- Compression format
-- Parquet: snappy, zstd (default), plain (no compression)
-- ORC: snappy, zlib (default), zstd, plain (no compression)
'write-format'='orc',
'compression-codec'='zlib'
);
يخفي هذا البيان الجملة SQL آليات تقنية قوية:
- تنظيم الملفات: يدعم وسائط التخزين الشائعة مثل HDFS وتخزين الكائنات.
- التقسيم الذكي: يدعم وظائف تحويل التقسيم لتمكين التقسيم الضمني في Iceberg وميزات تطور التقسيم.
- تحسين التخزين: يدعم تنسيقات التخزين العمودية مثل Parquet و ORC، جنبا إلى جنب مع طرق الضغط المختلفة لتعزيز الأداء.
بفضل دعم دوريس لعمليات DDL و DML على Iceberg، تم حل قضايا تماسك البيانات تمامًا أيضًا.
إدارة العمليات والصيانة
لضمان استقرار منصة البيانات، يستخدم شياو زانغ الأساليب التالية لرصد وإدارة جداول Iceberg:
-- View table snapshot information
SELECT * FROM iceberg_meta(
"table" = "iceberg.nyc.taxis",
"query_type" = "snapshots"
);
-- Query a specific snapshot using FOR VERSION AS OF
SELECT * FROM iceberg.nyc.taxis FOR VERSION AS OF {snapshot_id};
-- Query a specific snapshot using FOR TIME AS OF
SELECT * FROM iceberg.nyc.taxis FOR TIME AS OF {committed_at};
-- Manage snapshots
...
يوفر هذا السلسلة من الأدوات:
- رصد المقاييس: التحكم في الوقت الحقيقي لحالة الجدول ومقاييس اللقطة.
- إدارة اللقطات: تنظيف اللقطات التي انتهت صلاحيتها لإطلاق مساحة التخزين.
- استرداد الأخطاء: يدعم الرجوع إلى أي إصدار تاريخي (قراءة البيانات من الإصدار التاريخي بناءً على معرف اللقطة أو وقت إنشاء اللقطة).
من خلال هذه الممارسات، وصلت منصة البيانات لدى شياو زانغ المعتمدة على دوريس + Iceberg إلى ذروة جديدة:
- تحسن أداء الاستعلام بنسبة 300%.
- تم تقليل تكاليف التخزين بنسبة 40%.
- زادت كفاءة العمليات والصيانة بنسبة 200%.
الرحلة المثيرة لمنزل بحيرة دوريس لا تنتهي.
ترقبوا المزيد من المحتوى المثير والمفيد والقيم في العدد القادم!