Взаимосвязь сущностей SQL и NoSQL в Symfony
Я использую Symfony на своей веб-странице, я хочу использовать оба mongodb
а также mysql
в моей модели базы данных, и я не знаю, как связать между таблицей на моем sql и документом на mongodb.
Пример: PERSON
- отношение 1 - n - ADDRESS
, где PERSON
это стол на моем mysql
база данных и ADDRESS
это документ о mongodb
,
Является ли это возможным? Как мне это сделать? Спасибо.
1 ответ
Невозможно, если вы хотите иметь такое же сильное отношение, как, например, ограничения внешнего ключа. Две базы данных никогда не будут иметь непосредственного знания о данных друг друга, транзакциях (!), Областях и т. Д. Вы можете тщательно написать код, который синхронизирует их. Один подход, который я считаю простым и надежным: (для справки, документы - это блок данных NoSQL [сущности в NoSQL], а записи - это элементы данных SQL [сущности в SQL])
- Все документы являются дочерними для одной записи (или не безопасны для транзакций).
- Все транзакции контролируются SQL.
- Блокировка записи для записи подразумевает блокировку всех дочерних документов.
- Обновление документа требует, чтобы родительская запись была заблокирована.
- Одна транзакция NoSQL (если функция доступна) вкладывается прямо в любую транзакцию SQL.
- Перекрестные ссылки на БД - это простые данные; не ожидайте, что DB или Doctrine будут обрабатывать их специально.
Таким образом, две базы данных могут использоваться синхронно, относительно безопасно с транзакциями и блокировками.