ربط المعلومات متعددة البيانات
-
10-07-2019 - |
سؤال
ما هي طرق ربط البيانات الخاصة بك على بنيات قواعد البيانات المتعددة (فكر في MySQL vs postgresql وما إلى ذلك) ، في تطبيق واحد؟
هل يمكنك إنشاء علامات تجزئة/صفائف عملاقة لمطابقة المحتوى ضد بعضها البعض؟ هل هناك خيارات أخرى أكثر فاعلية وأقل استغرابًا للذاكرة للقيام بذلك؟
إذا كنت تريد استخدام البيانات من مصدر MySQL & Postgresql ، مع عدم وجود طريقة لتحويل ديسيبل واحد إلى الآخر (قيود التطبيق ، قلة الوقت ، قلة المعرفة ، ...) ، كيف ستذهب حول هذا الموضوع؟
المحلول
على الأقل في حالة MySQL ، يمكنك استخدام البيانات من قواعد بيانات متعددة في استعلام واحد على أي حال ، شريطة أن يتم استضافة قواعد البيانات بواسطة مثيل خادم MySQL نفسه. يمكنك تمييز الجداول عن قواعد بيانات مختلفة عن طريق تأهيل الجدول باسم المخطط:
CREATE TABLE test.foo (id SERIAL PRIMARY KEY) TYPE=InnoDB;
CREATE DATABASE test2;
CREATE TABLE test2.bar (foo_id BIGINT UNSIGNED,
FOREIGN KEY (foo_id) REFERENCES test.foo(id)) TYPE=InnoDB;
SELECT * FROM test.foo f JOIN test2.bar b ON (f.id = b.foo_id);
في PostgreSQL ، يمكنك أيضًا تأهيل مراجع الجدول باسم المخطط. لست متأكدًا مما إذا كان يمكنك إنشاء قيود مفاتيح خارجية عبر قواعد البيانات.
نصائح أخرى
SQL Relay أو وكيل SQL آخر.http://sqlrelay.sourceforge.net/
إذا كنت تتطلع إلى إنشاء قيود عبر RDBMSES - لا يمكنك ذلك.
أواجه نفس المشكلة مع تشغيل جزء من التطبيق من PostgreSQL للمكان الذي سيستفيد منه ، وبقية MySQL حيث يكون ذلك أفضل.
أقوم بإدراج العديد من الإدراج على نفس التنسيق من المعلومات الأساسية (في حالتي معرف مستخدم عام) ، لذلك أترك التطبيق يتعامل مع منطق التأكد من طلب نفس المعرف من كلا DBS.
لا توجد حقًا طريقة نظيفة للقيام بذلك خارج استخلاصه في فئة أو وظيفة فائدة ، على الرغم من ذلك ، وجدت.