Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
в рамках решения моей задачи — использование Neo4j никаких плюсов не дало
«Выбрать контакты пользователей, которые лайкнули киноактерам, которые снялись в фильмах, в которых звучали саунтдтреки, которые были написаны музыкантами, которым я поставил лайк»
Потому-что ваши данные реляцыонные и отнюдь не графовые. Представление характеристик товаров графом не совсем корректно, и обогнать MySQL в таких задачах достаточно трудно.
Намного интереснее было бы увидеть как раз построение запросов типа:
«Выбрать контакты пользователей, которые лайкнули киноактерам, которые снялись в фильмах, в которых звучали саунтдтреки, которые были написаны музыкантами, которым я поставил лайк»
MATCH (me:User {userId:123})-[:Like]->(musicants:User)-[:Author]->(s:Soundtrack)-[:Used]->(f:Film)<-[:Starred]-(actor: User)<-[:Like]-(u:User) RETURN u
Изначально я задал разделение по типам потому что полагал, что хранить число в строке и вести по ним поиск — кощунственно, потому создаем 3 таблицы.Глянул вашу статью. Ну так у меня поля все числовые, я строки не храню. Есть столбец value для boolean и numeric, есть столбец variant_id для select/multiselect (multiselect использует еще и value=0/1). Строковые характеристики отсутствуют как класс, нефиг — для порядку )) Правда value у меня float, наверное нехорошо…
(характеристика1 = true AND (характеристика2 < 100)) OR (характеристика1 = false AND (характеристика3 > 17)) ... далее обычно мешанина из AND\ORв ряде случаев оно лучше, чем таскание за собой elasticsearch
если монгу можно использовать для решения различных задач (пускай даже иногда в компромиссном варианте)Иногда нужно делать одну задачу хорошо, а не несколько — посредственно
elasticsearch в очень многих ситуациях избыточеня собственно с этим не спорю.
Начинаем работать с графовой базой данных Neo4j