ترحيل الفاعل
كانت تخزن برمجيات ميدياويكي في السابق إشارات إلى المستخدمين (مثل مؤلف مراجعة أو صورة) في صفة زوجين [<id>, <name>]
، بينما تستخدم [0, <IP address>]
للتعديلات مجهولة المصدر.
كان هذا الأمر سببًا في تكديس مساحة التخزين ونتج عنه مشاكل في الأداء على مواقع الويكي التي يوجد فيها عدد ضخم من المراجعات كما نتج عنه صعوبة إعادة تسمية المستخدمين أو إضافة نوع جديد من المؤلفين مثل T133452.
قدمت نسخة 1.31 من برمجيات ميدياويكي مبدأ الفاعل – actor (شخص يقوم بفعل، مثل تعديل أو حدث في سجل؛ سواء كان هذا إما مستخدم مسجل أو شخص مجهول في الوقت الراهن)، وكذلك عملية ترحيل إلى مخطط بيانات قاعدة بيانات جديدة، حيث يحل محل خانات مثل revision.rev_user
و revision.rev_user_text
خانات مثل revision.rev_actor
.
بسبب الحجم الضخم لجدول revision
في ويكيبيديا الإنكليزية، الذي كان يتعين أن يرحّل كاملًا قبل تنظيف التغييرات، جري الترحيل تدريجيًا، مقسمًا على عدة إصدارات من برمجيات ميدياويكي.
انتهى الأمر في برمجيات ميدياويكي 1.39.
استحدث الترحيل قيد جدول actor لكل زوجين فريدين من *_user
/ *_user_text
وكذلك استبدل هذه الأزواج بإشارة إلى معرّف صف الفاعل.
جرى ترحيل الأعمدة التالية:
جدول | أعمدة قديمة | أعمدة جديدة |
---|---|---|
revision | rev_user, rev_user_text | rev_actor |
archive | ar_user, ar_user_text | ar_actor |
ipblocks | ipb_by, ipb_by_text | ipb_by_actor |
image | img_user, img_user_text | img_actor |
oldimage | oi_user, oi_user_text | oi_actor |
filearchive | fa_user, fa_user_text | fa_actor |
recentchanges | rc_user, rc_user_text | rc_actor |
logging | log_user, log_user_text | log_actor |
كي نتجنب إجراء ALTER TABLE مكلف على جداول revision
الضخمة للغاية على مواقع الويكي تحت مظلة ويكيبيديا، نسخت في البداية كلا من rev_user
و rev_user_text
إلى جدول revision_actor_temp ومن هناك سوف تنقل مرة أخرى إلى revision
.
سوف يهمل الجدول revision_actor_temp
لاحقًا.
لو كنت مالك موقع ويكي، ربما لا تحتاج إلى فعل أي شيء منذ أن الترحيل سوف ينفّذ آليًا حينما تشغّل update.php
.
لو كنت ترغب في التحكم في وقت حدوث الترحيل، طالع $wgActorTableSchemaMigrationStage وكذلك نص الصيانة البرمجي migrateActors.php .
لو كنت من مطوري الامتدادات، وكان امتدادك يصل إلى قاعدة البيانات مباشرة وصولا إلى بعض الخانات المتأثرة، سوف تحتاج إلى تحديث استعلاماتك (ويفضل استخدام طرق getQueryInfo()
، مثل Revision::getQueryInfo()
، بدلًا من كتابة استعلامك يدويًا).
أثناء مدة الترحيل، يمكنك أيضًا استخدام فئة ActorMigration
كي تحصل على معلومات الأسلوب أو الخانة التي تحترم أية إعدادات $wgActorTableSchemaMigrationStage
.
لو كنت من مطوري الأدوات وتستخدم Toolforge ، ربما توجد بعض الآثار على مستوى الأداءـ حتى لو لم تستخدم أي من الخانات المتأثرة استخدامًا مباشرًا. طالع wikitech:News/Actor storage changes on the Wiki Replicas لمزيد من المعلومات.