Комментарии 16
С похожестью на SQL у авторов языка как-то не задалось.
Может вкусовщина, но в 2019 году это:
выглядит отвратительно! 3 вида скобочек и рандомно рассыпанные двоеточия.
Может вкусовщина, но в 2019 году это:
OPTIONAL MATCH ans = (:Person {name: «Pam»})-[:PARENT]->(:Person {name: «Liz»})
выглядит отвратительно! 3 вида скобочек и рандомно рассыпанные двоеточия.
0
На самом деле, двоеточия не так уж рандомны («имя: тип», имя можно не давать если не требуется, тогда перед двоеточием ничего не стоит), скобки разные потому что сущности разные (узел, связь и дополнительные параметры). Если чуть-чуть вникнуть, синтаксис довольно нагляден.
+1
Жаль, что Sparql толком не развивается, да и по Cypher всего одна реализация.
+1
Недавно появилась dgraph.io с открытыми исходниками и graphql из коробки.
0
Внезапно, 12 тыс. звёзд на GitHub, что всего на тысячу меньше чем у самой "звёздной" Cayley https://github.com/cayleygraph/cayley
+1
А был ли у вас опыт использования Drgaph в продакшене? Или, хотя бы, в учебном проекте, демке? Поделитесь?
0
Я пытался применить neo4j, но сталкнулся с очень медленной вставкой — порядка 10 в секунду при 100% загрузки 6 ядер. Хотя даже очень сложные запросы на выборку в этих условиях работали очень шустро.
+1
У меня пакетная вставка большого числа узлов с установлением связей с уже существующими работала плохо. Что именно происходило, не помню: то ли сервер Neo4j зависал, то ли падал, то ли памяти не хватало. Т.е. приходилось эту загрузку прерывать.
0
Проблема с медленной вставкой решается заданием ограничений (документация Neo4j).
Например, если для узлов типа
Например, можно задавать такие ограничения:
1) если единственное свойство (
2) если таких свойств несколько (
Например, если для узлов типа
:Person
указать, что поле name является ключевым, то запросы на запись будут выполняться быстрее на несколько порядков. У меня при добавлении ограничений скорость записи увеличивалась более чем в 200 раз.Например, можно задавать такие ограничения:
1) если единственное свойство (
name
) определяет уникальность узлов, то:CREATE CONSTRAINT ON (p:Person) ASSERT p.name IS UNIQUE
2) если таких свойств несколько (
name
и fam
), то:CREATE CONSTRAINT ON (n:Person) ASSERT (n.name, n.fam) IS NODE KEY
0
Дописал раздел "Заключение" (добавил ссылки на другие графовые СУБД) и улучшил форматирование некоторых примеров запросов, чтобы помещались на экране смартфона.
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Введение в язык запросов Cypher