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