2013-08-02 2 views
2

Я только что установил Neo4J, прекрасно работает. Я ищу очень простой учебник (на самом деле несколько командных строк), где я смогу:Neo4J первые шаги: как закодировать самые основные операции

  1. Создайте несколько данных (не менее 2 узлов и одно отношение между ними);
  2. Запрос и просмотр данных, недавно созданных;
  3. Обновить свойства этого образца данных;
  4. Удалить созданные данные; Пример кода может быть в Cypher и/или Gremlin для запуска в консоли веб-администратора в пустой базе данных по умолчанию.

Я смотрел много на официальном сайте, его документах, книгах и учебниках, и все они кажутся довольно сложными: некоторые даже заставляют меня создавать Java-приложение (я даже не работаю с Java) , Как и начинающий SQL, я хочу протестировать самые основные операции с базой данных, начиная с самого базового интерфейса, с панели администратора. Не понимаю, почему this thread был закрыт за неконструктивность (!?).

благодарит кучу заранее.

+0

Чтобы добавить ответы, ознакомьтесь с онлайн-учебником cypher: http://neo4j.org/learn/cypher. Хотелось бы получить некоторые отзывы от вас об этом. –

+0

Ваш учебник работает только для данной уже заполненной базы данных (фильмов). Я хочу что-то более основное. Кроме того, некоторый код не работал с той же базой данных в моем локальном хосте. – blagus

+0

В учебное пособие включена консоль для песочницы, которая уже заполнена. Вы можете дублировать эту настройку, выполнив инструкцию create, показанную как «Настройка графика», когда вы прокручиваете вверх. Можете ли вы уточнить, что не получилось? –

ответ

3
CREATE (blagus { firstname: 'Alexander', lastname: 'Blagus'}) 

CREATE (celso { firstname: 'Celso', lastname: 'Oliveira'}), (celso) - [r:WORKS_WITH] - > (blagus) 

return blagus, celso, r 

В этом примере есть 2 разных запроса, первый создает узел с 2 свойствами. Второй один делает одно и то же, как и первый плюс создает отношения с Селса к blagus

START n=node(*) RETURN "The number of nodes in your graph is "+count(*)+" !" as total; 

Возвращает переменное с именем общего со значением «Числом узлов в вашем графе 2!», It' S в основном так же, как выбор количества (*)

START me=node(1) MATCH me<--friend 
RETURN friend 

Предположим, что мы используем эту простую базу данных, как, например, заносить бы CELSO узел рассматривает направление отношений

START n=node(*) 
    MATCH n 
    WHERE n.firstname! ='Alexander' 
    RETURN n 

Этот запрос соответствует всем узлам с именем свойства, равным Alexander. Обратите внимание, что символ «!» Гарантирует, что только узлы, которые имеют такое свойство, будут приняты во внимание, предотвращая ошибку.

START n=node(*) 
MATCH n 
WHERE n.firstname! ='Alexander' 
SET n.age = '34' 
RETURN n 

Этот запрос соответствует узел, который имеет свойство ПгвЬЫате Александр и добавляет еще одно свойство «возраст» со значением «34»

START n = node(*) 
MATCH n WHERE n.firstname! = "Geraldo" DELETE n 

Этот запрос соответствует всем узлам с FirstName приравнивает к «Геральдо "и удаляет их.

START n = node(*) 
MATCH n-[r]-() 
DELETE n, r 

Эта команда получает все узлы и отношения и удаляет их.

Надеюсь, что это поможет!

+0

Это помогает! Есть очень немного статусов, которые не работают, может быть, синтаксис? Или моя версия Neo4J. – blagus

1

Много больших ресурсов here - особенно бесплатная книга. Не используется, но это выглядит, как это могло бы быть полезным - в основном обучение Neo4j через фиксирующие сломанные испытания: Neo4j-tutorial

+0

Книга замечательная, я распечатаю ее и прочитаю все. Но, как упоминалось ранее, ни одно место, включая ваши ссылки, не содержит краткое руководство по началу работы. Первая ссылка, указывающая на сайт Neo4J, проходит через теорию looot, я просто хочу начать вставлять, выбирать, обновлять и удалять данные. Если у вас есть связь с этими четырьмя простыми строками, я буду признателен. Вторая ссылка указывает на приложение Java, которое я должен загрузить, настроить и установить; Я упомянул об этом в нижней части моего вопроса: я даже не работаю с Java. Я говорю только о Neo4J. – blagus

2

Очень короткая версия вещей будет:

create ({name:"alice"})-[:likes]->({name:"bob"}); 

match n-[r]->m return n,r,m; 

match alice where alice.name! = 'alice' set alice.lastname='Alison'; 

match alice where alice.lastname! = 'Alison' return alice; 

match n-[r]->m delete r,n,m; 

Это все с помощью синтаксиса of neo4j 2.0.0M3.

Существует бесплатная книга graph databases, в которой содержится хорошее введение в cypher. Примеры, напечатанные в книге, не работают из коробки. Я положил working examples онлайн. И, конечно же, есть more on the neo4j website.

+0

Спасибо, Йорг, я просто отложил ваши запросы. Возможно, добавьте ссылку http://neo4j.org/learn/cypher. –

+0

Thx для редактирования. Добавлена ​​ссылка. –

+1

Первая строка работала, в матче я получил ошибку: «Неизвестная команда» соответствует «». Я попробовал некоторые примеры из книги, как Шекспир; некоторые команды действительно работали, но большинство из них (я не буду входить в детали, как только это не область этого потока). Neo4J не предоставляет простой учебник по быстрому запуску, нужно пройти много теории, прежде чем делать что-либо практическое. Я посмотрю ссылку на рабочие примеры, спасибо! – blagus

2

Что такое база данных Graph?

Граф - это изобразительное представление объектов, которые связаны некоторой парой ссылок. Граф содержит два элемента: Узлы (вершины) и отношения (ребра).

База данных графов - это база данных, которая используется для моделирования данных в виде графика. Он хранить любые данные с помощью:

  1. Вершины
  2. Отношений
  3. Свойства

Узлы: Узлов являются записи/данными в базах данных графов. Данные хранятся как свойства, а свойства - это простые пары имя/значение.

Узлы могут быть сгруппированы вместе, применяя метку к каждому члену. Узел может иметь ноль или более меток. Ярлыки не имеют никаких свойств. Хранение данных в Neo4j аналогично добавлению других записей в другие базы данных.

Отношения: Используется для соединения узлов. Он указывает, как связаны узлы.

  • Отношения всегда имеют направление.
  • Отношения всегда имеют тип.
  • Отношения формы шаблонов данных.
  • Свойства: Свойства называются значениями данных.

Популярные Graph Базы данных

Neo4j является самой популярной базы данных Graph. Другие базы данных графа

  • Oracle NoSQL Database
  • OrientDB
  • HypherGraphDB
  • GraphBase
  • InfiniteGraph
  • AllegroGraph и т.д.
  • Почему GraphDB

база данные Graph очень полезна сейчас день, потому что в базах данных графов данные существуют в виде взаимосвязи между различными объектами. Связь между данными более ценна, чем сами данные.

Реляционные базы данных хранят высокоструктурированные данные, которые имеют несколько записей, хранящих данные того же типа, что позволяет им использовать структурированные данные, и они не сохраняют отношения между данными, в то время как базы данных диаграмм хранят отношения и соединения, класса.

Модель данных для графических баз данных проста по сравнению с другими базами данных и может использоваться с системами OLTP. Они обеспечивают такие функции, как целостность транзакций и операционная доступность.

Refrence

Для получения более подробной информации: graph-database

Что такое Neo4j?

Neo4j - это база данных NoSQL. Он обладает высокой масштабируемостью и без схем. Это самая популярная в мире система управления базами данных. Neo4j был разработан Neo-технологией и называется транзакционной базой данных, совместимой с ACID, с собственным хранилищем графов и обработкой.

Neo4j реализован на языке Java, и к нему может быть доступен другой язык с использованием языка запросов Cypher (CQL) через транзакционную HTTP-конечную точку.

Neo4j - это путь быстрее, чем традиционные базы данных.

Neo4j Рабочие

  • Neo4j хранит и отображает данные в виде графика. В Neo4j данные представлены узлами и отношениями между этими узлами.
  • Базы данных Neo4j (как и в любой базе данных графиков) сильно отличаются от реляционных баз данных, таких как MS Access, SQL Server, MySQL и т. Д. Реляционные базы данных используют таблицы, строки и столбцы для хранения данных. Они также представляют данные в табличном виде.
  • Neo4j не использует таблицы, строки или столбцы для хранения или представления данных.
  • Neo4j лучше всего подходит для хранения данных, имеющих много взаимосвязей , поэтому графовые базы данных, такие как Neo4j, имеют преимущество и намного лучше работают с реляционными данными, чем реляционные базы данных .
  • Для графической модели обычно не требуется предопределенная схема. Таким образом, не нужно создавать структуру базы данных, прежде чем загружать данные (как в реляционной базе данных). В Neo4j данные представляют собой структуру . Neo4j является «необязательной» схемой «СУБД».
  • В Neo4j нет необходимости устанавливать ограничения первичного ключа/внешнего ключа на , чтобы определить, какие поля могут иметь отношение и к каким данным. Вам просто нужно определить отношения между узлами, которые вам нужны.

Refrence

для более подробной информации: neo4j

Что такое ничтожество?

Cypher - это декларативный язык, основанный на SQL, для визуального описания паттернов в графиках с использованием синтаксиса ascii-art.

Это позволяет нам указать, что мы хотим выбрать, вставить, обновить или удалить из наших данных графика, не требуя, чтобы мы точно описали, как это сделать.

Для получения более подробной информации: About cypher

Exploration База данных

Список всех метки узла

labels(n) 

Список всех узлов метки (и сосчитать их)

MATCH n 
RETURN distinct labels(n), count(n) as count_n 
ORDER BY count_n desc 

Список всех отношений (и сосчитать)

MATCH()-[r]-() 
RETURN distinct type(r), count(r) as count_r 
ORDER BY count_r desc 

Список всех узлов, которые не имеют все отношения

MATCH (n)-[r]-() 
WHERE r is null 
RETURN n, count(n) 

Что связано, и как

MATCH (a)<-[r]-(b) 
RETURN DISTINCT labels(a) AS This, type(r) as To, labels(b) AS That 

Полезные запросы

Match по стоимости недвижимости

MATCH (n:User {id:1234}) 
RETURN n 

или

MATCH (n:User) 
WHERE n.id = 1234 
RETURN n 

Найти узлы, которые не имеют определенного отношения

MATCH (u:User) 
WHERE NOT (u)-[:likes]->(:Seafood) 
RETURN u.name as UserName 

Совпадение узлов с использованием регистронезависимых регулярное_выражение

MATCH (u:User) 
WHERE u.name =~ '(?i)Alex.*' 
RETURN u.name 

узлы, которые не имеют отношения двух (определенного типа)

MATCH (u:User) 
WHERE NOT (:User)<-[:likes]-(u)-[:likes]->(:User) 
RETURN u.name 

Для более запросов: cypher queries