هل توجد قاعدة بيانات SQL مفتوحة المصدر تحتوي على مفهوم العمود الزائف "rowid" الخاص بـ Oracle؟
سؤال
أعلم أن MySQL وPostgreSQL[1] يقومان بذلك لا لديك هذا المفهوم، لذلك أنا مهتم بمعرفة وجود قاعدة بيانات SQL مفتوحة المصدر تحتوي على هذا المفهوم.
[1] تمت الإشارة لاحقًا إلى أن PostgreSQL يحتوي على العمود الزائف الصفي.
المحلول
PostgreSQL
لديه هذا المفهوم.
يرى هنا للحصول على قائمة مختصرة بالأعمدة الزائفة في PostgreSQL
, ، منها ctid
يهمك:
ctid (tuple identifier)
المعرف الذي يصف الموقع الفعلي للمجموعة داخل قاعدة البيانات.يتم تمثيل زوج من الأرقام بواسطة ctid:رقم الكتلة وفهرس المجموعة داخل تلك الكتلة.
وهذا هو التناظرية المباشرة ل Oracle
'س rowid
.
أما بالنسبة لل MySQL
, ، الموقع الفعلي للصف غير متاح للواجهة الأمامية.
في MyISAM
, rowid
هو مجرد ملف إزاحة من البداية، وهذا ما يتم تخزينه في أوراق الفهرس.
في InnoDB
, ، الجداول index organized
حسب التصميم، هذا يعني أن لديهم دائمًا نوعًا من المفتاح الأساسي، والفهارس الموجودة على ملف InnoDB
الجدول استخدام ذلك PRIMARY KEY
كمؤشر صف.
وهذا ينطبق أيضا على Oracle
'س index organized
الجداول، والتي أ rowid
ليس مؤشرًا فعليًا لكتلة في ملف بيانات، بل هو ما يسمى logical ROWID
, ، أو UROWID
إذا قمت بتحديد أ ROWID
من INDEX ORGANIZED
الجدول في Oracle
, ، ستلاحظ أن له تنسيقًا مختلفًا (شيء من هذا القبيل *BAEBwPICwQL+
).وهذا في الواقع مشفرة PRIMARY KEY
قيمة.
لاحظ أنه إذا لم تقم بتعريف أي عمود كـ a PRIMARY KEY
, MySQL
سيتم إنشاء بديل مخفي PRIMARY KEY
والتي لن يكون لديك أي سيطرة عليها أبدًا.
لهذا السبب يجب عليك دائمًا إنشاء نوع من ملف PRIMARY KEY
في InnoDB
طاولة:إنه مجاني، ويمكنك التحكم في العمود.
نصائح أخرى
وإذا لم تفعل أي منهما ذلك، ثم لا الآخرون.
وسكليتي لصناعة السيارات تجمعت عمود "ROWID" التي يمكنك الوصول إليها باستخدام ROWID، _ROWID، أو OID. إذا قمت بتعريف مفتاح أساسي عدد صحيح من أنها ستكون مستعارة.