Гибридная база данных: можно ли хранить идентификаторы MongoDB в MySQL? - PullRequest
0 голосов
/ 26 февраля 2020

Я разрабатываю схему базы данных для Mov ie Система рекомендаций с использованием гибридной базы данных. Для этого я использую популярные MySQL и MongoDB.

Приложение имеет два типа данных: один - данные действий пользователя, а другой - неструктурированные данные mov ie.

# MySQL Tables
1. User
2. User_Movie_Like
3. User_Movie_Watchlist
4. User_Movie_Recommendation

# MongoDB Collections
1. Movie

Чтобы добиться легкого поиска для фильмов, я создал словарную таблицу в MySQL, состоящую из ObjectIds MongoDB. В этой таблице словаря я храню objectId документа mon go и имя mov ie.

# MySQL Tables
5.Movie_Master
| id - Primary Key
| objectId - MongoDB's reference
| name - duplicate from movie collection

Это рекомендуемый способ сделать это?

1 Ответ

1 голос
/ 26 февраля 2020

Я не уверен насчет «рекомендованных», но стоит выделить преимущества и недостатки.

Преимущество вашего решения заключается в том, что оно позволяет вам моделировать большую часть вашего домена в базе данных и применять референтные ссылки. целостность - таблица user_movie_like может иметь внешний ключ к таблице movie, и вы можете избежать ошибок типа «мы удалили mov ie, но забыли удалить все лайки». Я полагаю, что для определенных действий кэширование имени mov ie в MySQL позволит избежать обращения к MongoDB для получения имени и, следовательно, ускорит работу вашего приложения.

Используя MongoDB для неструктурированных данных, вы может иметь дело с незнанием схемы заранее.

Недостатки в том, что вы используете два отдельных хранилища данных для своего приложения - вы можете, например, хранить неструктурированные данные mov ie в JSON объекты в MySQL и избегают двух наборов запросов.

Другим недостатком является то, что кэшируя имя mov ie в MySQL, вы вводите возможности для ошибок - если вы обновляете имя mov ie в MongoDB, но не в MySQL, ваше приложение может вести себя странно.

Еще один недостаток - отсутствие встроенного механизма, гарантирующего целостность ссылок в двух хранилищах данных - вы можете удалить mov ie в MongoDB, но не в MySQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...