Merge (عدم الخلط بينه وبين MergeTree) لا يخزّن البيانات بنفسه، بل يتيح القراءة من أي عدد من الجداول الأخرى في الوقت نفسه.
تُنفَّذ القراءة بالتوازي تلقائيًا. ولا يدعم الكتابة إلى جدول. وعند القراءة، تُستخدم فهارس الجداول التي تُقرأ فعليًا، إن وُجدت.
إنشاء جدول
معلمات المحرك
db_name
db_name — القيم الممكنة:
- اسم قاعدة البيانات،
- تعبير ثابت يُرجع سلسلة نصية تحتوي على اسم قاعدة بيانات، على سبيل المثال،
currentDatabase(), REGEXP(expression)، حيث يكونexpressionتعبيرًا نمطيًا لمطابقة أسماء قواعد البيانات.
- تعبير ثابت يُرجع سلسلة نصية تحتوي على اسم قاعدة بيانات، على سبيل المثال،
tables_regexp
tables_regexp — تعبير نمطي لمطابقة أسماء الجداول في DB أو DBs المحدَّدين.
التعبيرات النمطية — re2 (يدعم مجموعة فرعية من PCRE)، وهو حساس لحالة الأحرف.
راجع الملاحظات حول إفلات الرموز في التعبيرات النمطية في قسم “match”.
الاستخدام
عند تحديد الجداول المطلوب القراءة منها، لا يُختار جدولMerge نفسه، حتى لو كان يطابق التعبير النمطي. وذلك لتجنّب الحلقات.
يمكن إنشاء جدولَي Merge يحاول كلٌّ منهما قراءة بيانات الآخر بلا نهاية، لكن هذه ليست فكرة جيدة.
الطريقة المعتادة لاستخدام محرّك Merge هي التعامل مع عدد كبير من جداول TinyLog كما لو كانت جدولًا واحدًا.
أمثلة
مثال 1 لنفترض وجود قاعدتي البياناتABC_corporate_site وABC_store. سيحتوي جدول all_visitors على معرّفات من الجدولين visitors في كلتا قاعدتي البيانات.
WatchLog_old وقررت تغيير التقسيم دون نقل البيانات إلى جدول جديد باسم WatchLog_new، وتحتاج إلى عرض البيانات من كلا الجدولين.
الأعمدة الافتراضية
-
_table— اسم الجدول الذي قُرئت منه البيانات. النوع: String. إذا قمت بالتصفية باستخدام_table، (على سبيل المثالWHERE _table='xyz') فلن تُقرأ إلا الجداول التي تستوفي شرط التصفية. يعيد الجدول الذي يقرأ بدوره من جداول أخرى (Distributed،Merge،Buffer،Alias) صفوفًا تحمل اسم الجدول الذي أنتجها فعليًا، لذا تُقرأ هذه الجداول دائمًا ويُطبّق عامل التصفية على صفوفها. -
_database— يتضمن اسم قاعدة البيانات التي قُرئت منها البيانات. النوع: String.
- الأعمدة الافتراضية
- merge دالة جدول