sql >> Databáze >  >> RDS >> Database

Jak nainstalovat Neo4j na Ubuntu 20.04

Úvod

V tomto tutoriálu prozkoumáme, co je Neo4j, k čemu se používá a jak se implementuje. Nainstalujeme a nakonfigurujeme také instalaci na serveru Ubuntu 20.04. Neo4j je grafická databáze sloužící k vytváření datových vztahů. Mezi další příklady grafických databází patří:

  • ArangoDB
  • Grakn Core
  • Microsoft SQL Server 2017
  • OrientDB
  • RedisGraph

Co je Neo4j

Neo4j propojuje data tak, jak jsou uložena, což nám umožňuje spouštět dotazy, které jsme nikdy předtím neznali nebo o nich nepřemýšleli. Jednoduše řečeno, Neo4j zaznamenává vztah mezi datovými uzly, zatímco konvenční relační databáze používají k ukládání strukturovaných dat sloupce a řádky. Protože každý uzel ukládá odkazy na všechny ostatní uzly, ke kterým je připojen, může Neo4j kódovat a dotazovat se na složité vztahy s minimální režií.

Neo Technology je tvůrcem a vývojářem open-source softwaru Neo4j. Společnost jej vyvíjí od roku 2003. Je napsán v Javě a Scale a zdrojový kód je volně dostupný na GitHubu. Od roku 2015 je považován za nejpoužívanější grafický systém pro správu databází, který se dnes používá. Neo4j využívá svůj vlastní dotazovací jazyk zvaný Cypher, ale dotazy lze psát i v jiných stylech, například prostřednictvím Java API.

Předpoklady

Pro tuto instalaci software vyžaduje následující základní nastavení.

  • 8 GB RAM a čtyřjádrový server. Doporučené použití je minimálně 1 GB RAM a jednojádrový server.
  • OS Ubuntu 20.04
  • Všechny příkazy jsou spouštěny jako root. Pokud jste běžným uživatelem, příkazy musí být uvozeny příkazem sudo.

Instalace Neo4j

Přidat úložiště

Ubuntu oficiálně neobsahuje Neo4j ve standardním úložišti balíčků. Přidáme zdrojový kód balíčku ukazující na umístění úložiště Neo4j, poté přidáme klíč GPG z Neo4j pro ověření a poté nainstalujeme samotný Neo4j.

Začneme aktualizací seznamu balíčků a balíčků samotných.

root@host:~# apt update && apt -y upgrade 

Přidat další software

V tomto kroku nainstalujeme další balíček, který je potřeba pro připojení HTTPS. Tato aplikace může být již ve výchozím nastavení v systému nainstalována, ale stále je třeba ji aktualizovat.

root@host:~# apt install apt-transport-https ca-certificates curl software-properties-common -y 

apt-transport-https balíček umožňuje použití https prostřednictvím správce balíčků pomocí libapt-pkg knihovna. Tím je instalace bezpečná.

Ověřte bezpečnostní klíč

Nyní přidáváme oficiální bezpečnostní klíč pro úložiště balíčků Neo4j. Tento klíč kontroluje a ověřuje, že to, co instalujete, pochází z oficiálního úložiště.

 root@host:~# curl -fsSL https://debian.neo4j.com/neotechnology.gpg.key | apt-key add -
 OK
 root@host:~#   

Přidat úložiště

Přidejte oficiální úložiště Neo4j do seznamu správce balíčků.

root@host:~# add-apt-repository "deb https://debian.neo4j.com stable 4.1" 

Nainstalujte Neo4j

Při instalaci Neo4j a všech jeho závislostí je nezbytné si uvědomit, že instalace nás vyzve k instalaci Java balíčků pro práci s Neo4j. Během instalace stiskněte Y. pro přijetí této instalace softwaru. Pokud máte nainstalovanou Javu, instalační program pochopí a tento krok přeskočí.

 root@host:~# apt install neo4j -y
 Reading package lists... Done
 Building dependency tree       
 Reading state information... Done
 The following package was automatically installed and is no longer required:
   libfprint-2-tod1
 Use 'sudo apt autoremove' to remove it.
 The following additional packages will be installed:
   cypher-shell
 The following NEW packages will be installed:
   cypher-shell neo4j
 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
 Need to get 116 MB of archives.
 After this operation, 131 MB of additional disk space will be used.
 Get:1 https://debian.neo4j.com stable/4.1 amd64 cypher-shell all 4.1.3 [27,1 MB]
 Get:2 https://debian.neo4j.com stable/4.1 amd64 neo4j all 1:4.1.5 [88,4 MB]
 Fetched 116 MB in 10s (11,1 MB/s)                                              
 Preconfiguring packages ...
 Selecting previously unselected package cypher-shell.
 (Reading database ... 163626 files and directories currently installed.)
 Preparing to unpack .../cypher-shell_4.1.3_all.deb ...
 Unpacking cypher-shell (4.1.3) ...
 Selecting previously unselected package neo4j.
 Preparing to unpack .../neo4j_1%3a4.1.5_all.deb ...
 Unpacking neo4j (1:4.1.5) ...
 Setting up cypher-shell (4.1.3) ...
 Setting up neo4j (1:4.1.5) ...
 Processing triggers for man-db (2.9.1-1) ...
 Processing triggers for systemd (245.4-4ubuntu3.3) ...
 root@host:~#   

Spusťte službu Neo4j

Jakmile ji nainstalujeme, musíme ji povolit jako službu neo4j.service.

 root@host:~# systemctl enable neo4j.service
 Synchronizing state of neo4j.service with SysV service script with /lib/systemd/systemd-sysv-install.
 Executing: /lib/systemd/systemd-sysv-install enable neo4j
 Created symlink /etc/systemd/system/multi-user.target.wants/neo4j.service → /lib/systemd/system/neo4j.service.
 root@host:~#   

Zkontrolujte stav Neo4j

Dále ověříme, že vše funguje podle očekávání.

 root@host:~# systemctl status neo4j.service
  neo4j.service - Neo4j Graph Database
      Loaded: loaded (/lib/systemd/system/neo4j.service; enabled; vendor preset:>
      Active: active (running) since Wed 2020-12-23 20:04:44 +03; 2min 4s ago
    Main PID: 4827 (java)
       Tasks: 52 (limit: 9489)
      Memory: 447.9M
      CGroup: /system.slice/neo4j.service
              └─4827 /usr/bin/java -cp /var/lib/neo4j/plugins:/etc/neo4j:/usr/sh>
 сне 23 20:04:46 host neo4j[4827]: 2020-12-23 17:04:46.101+0000 INFO  ======== N>
 сне 23 20:04:47 host neo4j[4827]: 2020-12-23 17:04:47.073+0000 INFO  Initializi>
 сне 23 20:04:47 host neo4j[4827]: 2020-12-23 17:04:47.077+0000 INFO  Setting up>
 сне 23 20:04:47 host neo4j[4827]: 2020-12-23 17:04:47.077+0000 INFO  Creating n>
 сне 23 20:04:47 host neo4j[4827]: 2020-12-23 17:04:47.083+0000 INFO  Setting ve>
 сне 23 20:04:47 host neo4j[4827]: 2020-12-23 17:04:47.085+0000 INFO  After init>
 сне 23 20:04:47 host neo4j[4827]: 2020-12-23 17:04:47.088+0000 INFO  Performing>
 сне 23 20:04:47 host neo4j[4827]: 2020-12-23 17:04:47.197+0000 INFO  Bolt enabl>
 сне 23 20:04:47 host neo4j[4827]: 2020-12-23 17:04:47.843+0000 INFO  Remote int>
 сне 23 20:04:47 host neo4j[4827]: 2020-12-23 17:04:47.844+0000 INFO  Started.
 lines 1-19/19 (END)
 To exit this screen, press Ctrl + C.
 It is important to have the following parameters:
 Loaded: loaded (/lib/systemd/system/neo4j.service; enabled; vendor preset:>
  Active: active (running) since Wed 2020-12-23 20:04:44 +03; 2min 4s ago  

Test připojení DB

Protože jsme Neo4j nainstalovali a spustili jako službu, nyní otestujeme připojení k databázi a nakonfigurujeme uživatele admin.

Poznámka:Používáme bezplatnou verzi Community Edition Neo4j. Podporuje současnou práci se stejnou databází, ale nezahrnuje přidělování rolí a oprávnění uživatelům.

Práce s Neo4j

Pro interakci s databází spustíme interní nástroj s názvem cypher-shell pro práci s Neo4j. Při prvním spuštění budeme požádáni o zadání uživatele a hesla. Ve výchozím nastavení je uživatelské jméno neo4j a heslo je neo4j. Po prvním přihlášení budete vyzváni ke změně hesla na vámi zvolené.

 oot@host:~# cypher-shell
 username: neo4j
 password: *****
 Password change required
 new password: ********
 Connected to Neo4j 4.1.0 at neo4j://localhost:7687 as user neo4j.
 Type :help for a list of available commands or :exit to exit the shell.
 Note that Cypher queries must end with a semicolon.
 neo4j@neo4j>   

Pro ukončení použijte příkaz exit.

 neo4j@neo4j> exit
 Bye!
 root@host:~#   

Přidat uzly 

Pojďme nastavit několik ukázkových uzlů a definovat vztahy mezi nimi. Připojte se pomocí Cypher

 root@host:~# cypher-shell
 username: neo4j
 password: ********
 Connected to Neo4j 4.1.0 at neo4j://localhost:7687 as user neo4j.
 Type :help for a list of available commands or :exit to exit the shell.
 Note that Cypher queries must end with a semicolon.
 neo4j@neo4j>   

Dále přidáme uzel s názvem Liquidweb a jména kolegů, kteří pro tuto společnost pracují pod jménem Margaret. Můžeme to udělat pomocí příkazu CREATE a syntaxe bude následující.

 neo4j@neo4j> CREATE (:Liquidweb {name: 'Margaret'});
 0 rows available after 36 ms, consumed after another 0 ms
 Added 1 nodes, Set 1 properties, Added 1 labels
 neo4j@neo4j>   

Přidat uživatele

Pojďme přidat pár dalších kolegů a propojit je se společností, pro kterou pracují, Liquidweb. Připojíme se pomocí příkazu FRIEND.

 neo4j@neo4j> CREATE (:Liquidweb {name: 'John'})-[:FRIEND]->
              (:Liquidweb {name: 'Peter'})-[:FRIEND]->
              (:Liquidweb {name: 'Chris'});
 0 rows available after 38 ms, consumed after another 0 ms
 Added 3 nodes, Created 2 relationships, Set 3 properties, Added 3 labels
 neo4j@neo4j>   

Vytvářejte vztahy

Protože Peter a Chris pracují ve stejném oddělení a mají stejné vlastnosti jako uzly, vytvoříme vztah se sloupcem názvu.

 neo4j@neo4j> MATCH (a:Liquidweb),(b:Liquidweb)
              WHERE a.name = 'Peter' AND b.name = 'Chris'
              CREATE (a)-[r:DEPARTMENT { name: 'Developers' }]->(b)
              RETURN type(r), r.name;
 +------------------------+
 | type(r) | r.name       |
 +------------------------+
 | "DEPARTMENT" | "Developers" |
 +------------------------+
 1 row available after 105 ms, consumed after another 10 ms
 Created 1 relationships, Set 1 properties
 neo4j@neo4j>  
  • MATCH – Označuje shodu uzlů. V tomto případě v rámci jedné společnosti Liquidweb
  • KDE – mezi hodnotami
  • VYTVOŘIT – vytvořit a přidat
  • NÁVRAT – Návrat na základnu.

Nyní vytvořte spojení mezi Johnem a Chrisem, ačkoli jsou v různých odděleních, ale pracují na stejném projektu.neo4j@neo4j> MATCH (a:Liquidweb),(b:Liquidweb)

              WHERE a.name = 'John' AND b.name = 'Chris'
              CREATE (a)-[r:PROJECT { name: 'Cool Project' }]->(b)
              RETURN type(r), r.name;
 +----------------------------+
 | type(r)   | r.name         |
 +----------------------------+
 | "PROJECT" | "Cool Project" |
 +----------------------------+
 1 row available after 48 ms, consumed after another 5 ms
 Created 1 relationships, Set 1 properties
 neo4j@neo4j>   

Zobrazit informace

Nyní zobrazíme všechna tato data a jejich vztahy pomocí následujícího dotazu.

 neo4j@neo4j> Match (n)-[r]->(m)
              Return n,r,m;
 +--------------------------------------------------------------------------------------------------+
 | n                            | r                                  | m                            |
 +--------------------------------------------------------------------------------------------------+
 | (:Liquidweb {name: "John"})  | [:FRIEND]                          | (:Liquidweb {name: "Peter"}) |
 | (:Liquidweb {name: "John"})  | [:PROJECT {name: "Cool Project"}]  | (:Liquidweb {name: "Chris"})  |
 | (:Liquidweb {name: "Peter"}) | [:DEPARTMENT {name: "Developers"}] | (:Liquidweb {name: "Chris"})  |
 | (:Liquidweb {name: "Peter"}) | [:FRIEND]                          | (:Liquidweb {name: "Chris"})  |
 +--------------------------------------------------------------------------------------------------+
 4 rows available after 17 ms, consumed after another 2 ms
 neo4j@neo4j>   

Obdrželi jsme výstupní data s následujícími vztahy FRIEND, které ukazují vztah a následující datové vztahy mezi ODDĚLENÍM a PROJEKTEM.

Chcete-li ukončit šifrovací shell, spusťte příkaz exit.

 neo4j@neo4j> :exit
 Bye!
 root@host:~#   

Nastavte zabezpečené vzdálené připojení k Neo4j

Ne vždy se budeme moci připojit k databázi ze samotného serveru. Pokud chceme aplikaci nakonfigurovat tak, aby používala Neo4j, budeme ji muset nakonfigurovat tak, aby se bezpečně připojovala k jiným serverům. Také bychom měli nakonfigurovat firewall, abychom omezili, které servery se mohou připojit k Neo4j.

Ve výchozím nastavení se Neo4j připojuje přes localhost (127.0.0.1 - localhost - určený pro testování aplikací bez práce s jinými servery). Také práce Neo4j z localhostu nebude otevřena pro veřejný přístup k internetu. K Neo4j se budou moci připojit pouze uživatelé s přístupem k místní síti.

Nakonfigurujte Neo4j

Aby se Neo4j mohl připojit k jiným serverům, musíme změnit nastavení konfiguračního souboru /etc/neo4j/neo4j.conf . K tomuto úkolu použijeme nano editor. Pamatujte, že pokud nejste root, použijte příkaz sudo.

 root@host:~# nano /etc/neo4j/neo4j.conf
 root@host:~#   

Najděte řádek v části Síťový konektor

#dbms.default_listen_address=0.0.0.0 

Odkomentujte tento řádek odstraněním symbolu # a poté stisknutím Ctrl + S a Ctrl + X uložte a ukončete editor.

Hodnota 0.0.0.0 naváže Neo4j na všechna dostupná síťová rozhraní IPv4. Jako datovou cestu můžete vložit konkrétní IP adresu nebo síť, kterou vaše servery používají. Můžete jej také nakonfigurovat tak, aby používal rozhraní IPv6, ale toto nastavení má mnoho nuancí. Doporučujeme, abyste si přečetli dokumentaci na oficiálních stránkách.

Konfigurace brány firewall pro vzdálená připojení

Pro konfiguraci softwaru Neo4j pro vzdálená připojení musíme nakonfigurovat firewall. Omezujeme přístup tak, aby se k němu mohly připojit pouze důvěryhodné systémy. V tomto případě použijeme výchozí firewall Ubuntu, UFW.

Dále musíme zkontrolovat, zda je aktivován firewall. Pokud není aktivní, musíme jej povolit.

 root@host:~# ufw enable
 Firewall is active and enabled on system startup
 root@host:~#   

Neo4j při instalaci softwaru vytvoří dvě síťové zásuvky. Jeden na portu 7474 pro rozhraní HTTP a jeden pro primární protokol na portu 7687. Společnost Neo4j doporučuje použít port 7687. Příkaz k otevření portu bude podobný následujícímu příkazu používanému pro povolení adresy IPv4.

 ufw allow from YOUR_IP to any port 7687 proto tcp
 YOUR_IP - Use an IP here to provide access permission. If you want to allow access to the entire local network, use the following rule:
 ufw allow from 192.168.50.0/16 to any port 7687 proto tcp  

Chcete-li otevřít port, zadejte konkrétní rozsah sítě. Pro adresu IPv6 bude příkaz vypadat takto.

ufw allow from fe80::1006:f7a3:b9cc:b0cb to any port 7687 proto tcp 

Výše uvedené adresy IP jsou použity jako příklad. Nahraďte své hodnoty a přidejte pravidlo.

 root@host:~# ufw allow from 192.168.50.189 to any port 7687 proto tcp
 Rule added
 root@host:~#   

Restartujte bránu firewall

Nezapomeňte restartovat bránu firewall.

 root@host:~# ufw reload
 Firewall reloaded
 root@host:~#   

Ověřte připojení

Nyní se podívejme, zda funguje správně.

root@host:~# ufw status Status: active To                         Action      From --                         ------      ---- 7687/tcp                   ALLOW       192.168.50.189             root@host:~# 

A s tím máme funkční server Neo4j, který je připraven k použití a nakonfigurovaný tak, aby umožňoval přístup na portu 7687.

Závěr

Setkali jsme se s grafickou databází Neo4j, dozvěděli jsme se, jak funguje a proč je potřeba. Nastavte správce balíčků a poté nainstalujte Neo4j. Dále jsme zkontrolovali funkčnost, šli do toho a změnili heslo. Vyzkoušeli jsme základní příkazy, jak vytvořit tabulku, vytvořit vztahy a nastavit uzly. Nakonec jsme nakonfigurovali připojení k IP adresám, které jsme potřebovali, a nakonfigurovali firewall pro zabezpečení.


  1. Zkoumání chyby ORA 028513 DG4ODBC

  2. Kurz SQL Server – Vše, co potřebujete k zvládnutí Transact-SQL

  3. Jak odečíst hodiny od datatime v MySQL?

  4. Odstranění duplicitních řádků z tabulky