سؤال

ما هي طرق ربط البيانات الخاصة بك على بنيات قواعد البيانات المتعددة (فكر في 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.

لا توجد حقًا طريقة نظيفة للقيام بذلك خارج استخلاصه في فئة أو وظيفة فائدة ، على الرغم من ذلك ، وجدت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top