Database
 sql >> Baza danych >  >> RDS >> Database

Jak zainstalować Neo4j na Ubuntu 20.04

Wprowadzenie

W tym samouczku zbadamy, czym jest Neo4j, do czego służy i jak jest zaimplementowany. Zainstalujemy i skonfigurujemy również instalację na serwerze Ubuntu 20.04. Neo4j to graficzna baza danych służąca do tworzenia relacji danych. Inne przykłady graficznych baz danych to:

  • ArangoDB
  • Grakn rdzeń
  • Microsoft SQL Server 2017
  • OrientDB
  • Ponowny wykres

Co to jest Neo4j

Neo4j łączy dane tak, jak są one przechowywane, umożliwiając nam uruchamianie zapytań, o których nigdy wcześniej nie wiedzieliśmy ani o których nie myśleliśmy. Mówiąc prościej, Neo4j rejestruje relacje między węzłami danych, podczas gdy konwencjonalne relacyjne bazy danych używają kolumn i wierszy do przechowywania danych strukturalnych. Ponieważ każdy węzeł przechowuje odniesienia do wszystkich innych węzłów, z którymi jest połączony, Neo4j może kodować i wyszukiwać złożone relacje z minimalnym obciążeniem.

Neo Technology jest twórcą i twórcą oprogramowania o otwartym kodzie źródłowym Neo4j. Firma rozwija go od 2003 roku. Jest napisany w Javie i Scali, a kod źródłowy jest dostępny bezpłatnie na GitHub. Od 2015 roku jest uważany za najczęściej używany graficzny system zarządzania bazami danych używany obecnie. Neo4j wykorzystuje swój własny język zapytań o nazwie Cypher, ale zapytania mogą być również pisane w innych stylach, na przykład poprzez Java API.

Wymagania wstępne

W przypadku tej instalacji oprogramowanie wymaga następujących ustawień podstawowych.

  • 8 GB pamięci RAM i czterordzeniowy serwer. Zalecane użycie to co najmniej 1 GB pamięci RAM i serwer jednordzeniowy.
  • Ubuntu 20.04 system operacyjny
  • Wszystkie polecenia są uruchamiane jako root. Jeśli jesteś zwykłym użytkownikiem, polecenia muszą być poprzedzone poleceniem sudo.

Instalacja Neo4j

Dodaj repozytorium

Ubuntu oficjalnie nie zawiera Neo4j w standardowym repozytorium pakietów. Dodamy źródło pakietu wskazujące lokalizację repozytorium Neo4j, następnie dodamy klucz GPG z Neo4j do weryfikacji, a następnie zainstalujemy samego Neo4j.

Zaczynamy od aktualizacji listy pakietów i samych pakietów.

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

Dodaj dodatkowe oprogramowanie

W tym kroku zainstalujemy dodatkowy pakiet potrzebny do połączeń HTTPS. Ta aplikacja może być już domyślnie zainstalowana w systemie, ale nadal wymaga aktualizacji.

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

apt-transport-https pakiet umożliwia korzystanie z https przez menedżera pakietów przy użyciu libapt-pkg biblioteka. Dzięki temu instalacja jest bezpieczna.

Zweryfikuj klucz bezpieczeństwa

Teraz dodajemy oficjalny klucz bezpieczeństwa dla repozytorium pakietów Neo4j. Ten klucz sprawdza i weryfikuje, co instalujesz, pochodzi z oficjalnego repozytorium.

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

Dodaj repozytorium

Dodaj oficjalne repozytorium Neo4j do listy menedżerów pakietów.

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

Zainstaluj Neo4j

Podczas instalacji Neo4j i wszystkich jego zależności, należy pamiętać, że instalacja poprosi nas o zainstalowanie pakietów Java do pracy z Neo4j. Podczas instalacji naciśnij Y., aby zaakceptować instalację oprogramowania. Jeśli masz zainstalowaną Javę, instalator zrozumie i pominie ten krok.

 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:~#  

Uruchom usługę Neo4j

Po zainstalowaniu musimy włączyć go jako usługę 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:~#  

Sprawdź stan Neo4j

Następnie sprawdzamy, czy wszystko działa zgodnie z oczekiwaniami.

 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 

Testuj połączenie z bazą danych

Ponieważ zainstalowaliśmy Neo4j i uruchomiliśmy go jako usługę, przetestujemy teraz połączenie z bazą danych i skonfigurujemy administratora.

Uwaga:Korzystamy z bezpłatnej wersji Neo4j Community Edition. Obsługuje jednoczesną pracę z tą samą bazą danych, ale nie obejmuje przypisywania ról i uprawnień użytkownikom.

Praca z Neo4j

Aby wchodzić w interakcję z bazą danych, uruchomimy wewnętrzne narzędzie o nazwie cypher-shell do pracy z Neo4j. Gdy uruchomimy go po raz pierwszy, zostaniemy poproszeni o podanie użytkownika i hasła. Domyślna nazwa użytkownika to neo4j, a hasło to neo4j. Po pierwszym zalogowaniu zostaniesz poproszony o zmianę hasła na jedno z wybranych.

 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>  

Aby wyjść, użyj polecenia wyjścia.

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

Dodaj węzły

Skonfigurujmy kilka przykładowych węzłów i zdefiniujmy relacje między nimi. Połącz za pomocą Cyphera

 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>  

Następnie dodajmy węzeł o nazwie Liquidweb oraz nazwiska współpracowników, którzy pracują dla tej firmy pod nazwą Margaret. Możemy to zrobić za pomocą polecenia CREATE, a składnia będzie następująca.

 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>  

Dodaj użytkowników

Dodajmy jeszcze kilku kolegów i połączmy ich z firmą, w której pracują, Liquidweb. Połączymy się za pomocą polecenia 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>  

Utwórz relacje

Ponieważ Peter i Chris pracują w tym samym dziale i mają te same właściwości co węzły, utworzymy relację z kolumną nazwy.

 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 - Wskazuje zgodność węzłów. W tym przypadku w ramach jednej firmy Liquidweb
  • GDZIE - między wartościami
  • UTWÓRZ - twórz i dodawaj
  • POWRÓT – Powrót do bazy.

Teraz utwórz połączenie między Johnem i Chrisem, chociaż są w różnych działach, ale pracują nad tym samym projektem.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>  

Wyświetl informacje

Teraz wyświetlimy wszystkie te dane i ich relacje za pomocą następującego zapytania.

 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>  

Otrzymaliśmy dane wyjściowe z następującymi relacjami PRZYJACIEL, które pokazują relację i następujące relacje danych między DZIAŁEM a PROJEKTEM.

Aby wyjść z szyfru, uruchom polecenie wyjścia.

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

Skonfiguruj bezpieczne zdalne połączenie z Neo4j

Nie zawsze będziemy mogli połączyć się z bazą danych z samego serwera. Jeśli chcemy skonfigurować aplikację do korzystania z Neo4j, będziemy musieli skonfigurować ją tak, aby bezpiecznie łączyła się z innymi serwerami. Ponadto powinniśmy skonfigurować zaporę sieciową, aby ograniczyć, które serwery mogą się łączyć z Neo4j.

Domyślnie Neo4j łączy się przez localhost (127.0.0.1 - localhost - przeznaczony do testowania aplikacji bez współpracy z innymi serwerami). Również praca Neo4j z localhost nie będzie otwarta dla publicznego dostępu do Internetu. Tylko użytkownicy z dostępem do sieci lokalnej będą mogli połączyć się z Neo4j.

Skonfiguruj Neo4j

Aby Neo4j mógł łączyć się z innymi serwerami, musimy zmienić ustawienia pliku konfiguracyjnego /etc/neo4j/neo4j.conf . Do tego zadania użyjemy edytora nano. Pamiętaj, jeśli nie jesteś rootem, użyj polecenia sudo.

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

Znajdź linię w sekcji Złącze sieciowe

#dbms.default_listen_address=0.0.0.0

Odkomentuj tę linię, usuwając symbol #, a następnie naciśnij Ctrl + S i Ctrl + X, aby zapisać i wyjść z edytora.

Wartość 0.0.0.0 wiąże Neo4j ze wszystkimi dostępnymi interfejsami sieciowymi IPv4. Możesz podać konkretny adres IP lub sieć, której serwery używają jako ścieżki danych. Możesz również skonfigurować go tak, aby używał interfejsów IPv6, ale jest wiele niuansów tego ustawienia. Zalecamy zapoznanie się z dokumentacją na oficjalnej stronie internetowej.

Skonfiguruj zaporę sieciową dla połączeń zdalnych

Aby skonfigurować oprogramowanie Neo4j do połączeń zdalnych, musimy skonfigurować firewall. Ograniczamy dostęp, aby tylko zaufane systemy mogły się z nim połączyć. W takim przypadku użyjemy domyślnej zapory Ubuntu, UFW.

Następnie musimy sprawdzić, czy zapora jest aktywna. Jeśli nie jest aktywny, musimy go włączyć.

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

Neo4j tworzy dwa gniazda sieciowe podczas instalacji oprogramowania. Jeden na porcie 7474 dla interfejsu HTTP, a drugi dla protokołu podstawowego na porcie 7687. Neo4j zaleca użycie portu 7687. Polecenie otwarcia portu będzie podobne do następującego polecenia używanego do zezwolenia na adres 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 

Wprowadź określony zakres sieci, aby otworzyć port. W przypadku adresu IPv6 polecenie będzie wyglądać tak.

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

Powyższe adresy IP służą jako przykład. Zastąp swoje wartości i dodaj regułę.

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

Uruchom ponownie zaporę sieciową

Pamiętaj, aby ponownie uruchomić zaporę sieciową.

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

Zweryfikuj połączenie

Sprawdźmy teraz, czy działa poprawnie.

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

I dzięki temu mamy działający serwer Neo4j, który jest gotowy do pracy i skonfigurowany tak, aby umożliwić dostęp na porcie 7687.

Wniosek

Spotkaliśmy się z graficzną bazą danych Neo4j, dowiedzieliśmy się, jak działa i dlaczego jest potrzebna. Skonfiguruj menedżera pakietów, a następnie zainstaluj Neo4j. Następnie sprawdziliśmy funkcjonalność, weszliśmy w to i zmieniliśmy hasło. Wypróbowaliśmy podstawowe polecenia dotyczące tworzenia tabeli, tworzenia relacji i konfigurowania węzłów. Na koniec skonfigurowaliśmy połączenie z potrzebnymi adresami IP i skonfigurowaliśmy zaporę ogniową dla bezpieczeństwa.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zrozumienie wdrożenia Amazon Auroras Multi-AZ

  2. Usługa migracji bazy danych AWS DMS

  3. Używanie wzorców przepływu pracy do zarządzania stanem dowolnej jednostki

  4. Czy wyszukiwanie RID jest szybsze niż wyszukiwanie klucza?

  5. Zdecyduj między monitorowaniem opartym na agencie a bezagentowym