Презентация Neo4j на ADD-3

2,739 views

Published on

Published in: Technology
1 Comment
1 Like
Statistics
Notes
  • Hello My Dear,
    Am miss Jane,It is my desire to contact you today for a lasting friendship and good communication with you,Write me back with my email address for my picture and more about me.my love distance or colour does not matter but love matters alot in life.am waiting to recive your reply soon,please my dear write me through my e-mail or if possible you can drop yours email for me to write you myself ok.May God bless you.

    (janesambo28@yahoo.com)
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
2,739
On SlideShare
0
From Embeds
0
Number of Embeds
843
Actions
Shares
0
Downloads
32
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Презентация Neo4j на ADD-3

  1. 1. Связи решают все! Евгений Газдовский Animotron.org twitter.com/gazdovsky
  2. 2. Если имеем сложные запутанные модели
  3. 3. Геоинформационные системы
  4. 4. Социальные сети
  5. 5. FOAFЯ, друзья, друзья друзей
  6. 6. Онтологии
  7. 7. RDF
  8. 8. Animo
  9. 9. Не хотим головной боли от RDBMS
  10. 10. Моделированиеотношенийв реляционныхСуБД
  11. 11. Уменьшениепроизводительности во многих случаях
  12. 12. Альтернативыреляционным СуБД Key/value Document Column Family Graph
  13. 13. Сложность / размер Key/Value stores Column FamilyРазмер Document RDBMS Graph 109 узлов и связей Большинство систем Сложность
  14. 14. Для каждоговарианта своё! Эпоха использования реляционных СУБД для всех задач закончилась.
  15. 15. Графы
  16. 16. Neo4j IS Graph Data Base
  17. 17. Neo4j — этоNodes,Relationships, RelationshipTypes,Properties
  18. 18. Моделирование гиперграфа
  19. 19. Enhanced Neo4j API Vertexes, Edges
  20. 20. Моделированиеупорядоченого графа
  21. 21. Взаимодействие с Neo4j Embedded REST API
  22. 22. Взаимодействие с Neo4j Java, Ruby, Python API Blueprints, Gremlin Cypher Query Spring
  23. 23. Embedded Java API
  24. 24. Создание БДString STORAGE = "/home/foo/data";EmbeddedGraphDatabase graphDb;graphDb = new EmbeddedGraphDatabase(STORAGE);Node root = graphDb.getReferenceNode();
  25. 25. Добавление узловNode neo = graphDb.createNode();neo.setProperty("name", "Thomas Anderson");neo.setProperty("age", 29);Node trinity = graphDb.createNode();trinity.setProperty("name", "Trinity");
  26. 26. Типы связейenum NeoRelType implements RelationshipType { ROOT, KNOWS, CODED_BY}
  27. 27. Добавление связейroot.createRelationshipTo(neo, ROOT);Relationship r;r = neo.createRelationshipTo(trinity, KNOWS);r.setProperty("age", "3 days")
  28. 28. Начало и конецNode start = r.getStartNode();Node end = r.getEndNode();Node n = r.getOtherNode(start);
  29. 29. СвязиRelationship x = neo.getSingleRelationship(Direction.OUTGOING);Relationship y = trinyty.getSingleRelationship(Direction.INCOMING);Itreator<Relationship> it = neo.getRelationships(ROOT);
  30. 30. Свойстваboolean hasName = neo.hasPropperty("name")String name = (String)neo.getProperty("name");String age = (String)r.getProperty("age");
  31. 31. Удаление узлов, связей r.delete(); trinity.delete();
  32. 32. Фреймворкпостроения индексов Relationship Node
  33. 33. Фреймворкпостроения индексов Property Произвольный ключ
  34. 34. Фреймворкпостроения индексов Lucene Berkeley Database
  35. 35. Полнотекстовый поиск создание индекса LuceneIndexManager index = graphDb.index();Index<Node> fulltextMovies = index.forNodes( "movies­fulltext",    MapUtil.stringMap( IndexManager.PROVIDER,      "lucene", "type", "fulltext" ) );
  36. 36. Полнотекстовый поиск добавлениеfulltextMovies.add( theMatrix, "title",  "The Matrix" );fulltextMovies.add( theMatrixReloaded, "title", "The Matrix Reloaded" );
  37. 37. Собственно поискNode found = fulltextMovies.query( "title",  "reloaded" ).getSingle();
  38. 38. Все возможности Lucene сортировка числовые диапазоны маски составные запросы
  39. 39. Автоматическое индексированиечерез имена и значения свойств
  40. 40. Запросы в Neo4j — этоПоиск узлов и связей по индексу Траверс графа
  41. 41. Траверс графа — этопоиск множества путейпо заданным условиям
  42. 42. Траверс графаTraversalDescription td_KNOWS =  Traversal.description(). breadthFirst(). relationships(KNOWS, OUTGOING);
  43. 43. Траверс графаTraverce t = td_KNOWS.traverce(neo);
  44. 44. Траверс графаIteraterable<Nodes> nodes = t.nodes();for (Node n : nodes) { …}
  45. 45. Траверс графаIteratrable<Relationship> relationships; relationships = t.relationships();for (Relationship n : relationships) { …}
  46. 46. Траверс графаPath p;Iterator<Path> paths = t.iterator();while (paths.hasNext()) { //… p = paths.next(); //…}
  47. 47. Все алгоритмы ленивые и могут бытьраспараллелены
  48. 48. Встроенные алгоритмы обхода графа в глубину и ширину
  49. 49. Коллекция алгоритмов поиска путей Дейкстры, А*, всех путей
  50. 50. Транзакции ACIDМногопоточность
  51. 51. Транзакциипривязаны к thread
  52. 52. Транзакциитолько на запись
  53. 53. ТранзакцииTransaction tx = graphDb.beginTx();try { Node n = graphDb.createNode(); //… tx.success();} finally { tx.finish()}
  54. 54. Транзакциимогут быть вложенными
  55. 55. Транзакцииоптимальный размер до 50К изменений
  56. 56. Инструменты
  57. 57. Neo4j Webadmin
  58. 58. Neoclipse
  59. 59. Gephi
  60. 60. Gephi
  61. 61. Gephi
  62. 62. КластерCA, AGPL
  63. 63. Проекты
  64. 64. Neo4j Spatial
  65. 65. Structur CMS
  66. 66. Animotron
  67. 67. Neo4j — этоВстраиваемая Java СуБДПолностью ACIDФреймворк построения индексовПоддержка 24/7 с 2003 годаВысоко доступная кластеризация (CA)Большое комьюнити
  68. 68. GPL, AGPLneo4j.org
  69. 69. Спасибо за внимание Евгений Газдовский Animotron.org gazdovsky@gmail.com twitter.com/gazdovsky
  70. 70. Пожалуйста, поставьте оценку моему докладу.Ваше мнение очень важно. Спасибо!

×