Я до сих пор работал с системой реляционных баз данных (MySQL), MongoDB и Dynamo DB и только что познакомился с концепцией Graph DB.
Я хотел иметь систему баз данных, где я мог бы иметь возможностьиспользуйте
- MySQL для транзакционных и реляционных операций (аутентификация, доступ на основе ролей и финансовые операции)
- Neo4J для релевантности контента, реляционные запросы в реальном времени
- MongoDB дляТолько для чтения предварительно сформированные объекты JSON
Давайте рассмотрим пример электронной коммерции.
Я собираю все данные в mysql, чтобы потом их можно было воссоздать в других системах БД.с конкретными фиксированными отношениями, свяжет товары и категории, подкатегории и предпочтения покупателей в neo4j.Хотя мне нужно описание продуктов на нескольких языках, которые я хочу хранить в MongoDB.
Я не эксперт по базам данных, но кто-то, кого я знаю, который является администратором базы данных в течение достаточно долгого времени, посоветовал мне не загружать neo4j с такимиконтент, который не будет использоваться для формирования запросов на отношения, например, текстовые описания продуктов и их переводы.
Я хотел бы достичь чего-то вроде, узел продукта Neo4J будет иметь информацию, которую можно использовать в запросе (не операция поиска) будет иметь следующие метки
- Идентификатор продукта
- Дата создания
- Название продукта
- Среднее количество просмотров
- Средний рейтинг
И сохраните все текстовые данные в базе данных Mongo.
Выполнение всего этого программно возможно, но я не уверен, насколько это повлияет на производительность и насколько она будет стабильной.Что вы, ребята, предлагаете?
Мои цели
- Не создавать огромные копии одних и тех же данных в системах с несколькими базами данных.
- Сделать базы данных максимально оптимизированными для повышения производительностипо возможности, не загружая огромные текстовые данные в узлы.
Язык, который я собираюсь использовать, - PHP / Laravel Framework.
Спасибо