Взаимосвязь сущностей SQL и NoSQL в Symfony

Я использую Symfony на своей веб-странице, я хочу использовать оба mongodb а также mysql в моей модели базы данных, и я не знаю, как связать между таблицей на моем sql и документом на mongodb.
Пример: PERSON - отношение 1 - n - ADDRESS, где PERSON это стол на моем mysql база данных и ADDRESS это документ о mongodb,
Является ли это возможным? Как мне это сделать? Спасибо.

1 ответ

Решение

Невозможно, если вы хотите иметь такое же сильное отношение, как, например, ограничения внешнего ключа. Две базы данных никогда не будут иметь непосредственного знания о данных друг друга, транзакциях (!), Областях и т. Д. Вы можете тщательно написать код, который синхронизирует их. Один подход, который я считаю простым и надежным: (для справки, документы - это блок данных NoSQL [сущности в NoSQL], а записи - это элементы данных SQL [сущности в SQL])

  1. Все документы являются дочерними для одной записи (или не безопасны для транзакций).
  2. Все транзакции контролируются SQL.
  3. Блокировка записи для записи подразумевает блокировку всех дочерних документов.
  4. Обновление документа требует, чтобы родительская запись была заблокирована.
  5. Одна транзакция NoSQL (если функция доступна) вкладывается прямо в любую транзакцию SQL.
  6. Перекрестные ссылки на БД - это простые данные; не ожидайте, что DB или Doctrine будут обрабатывать их специально.

Таким образом, две базы данных могут использоваться синхронно, относительно безопасно с транзакциями и блокировками.

Другие вопросы по тегам