Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Cara Menginstal Neo4j di Ubuntu 20.04

Pengantar

Dalam tutorial ini, kita akan membahas apa itu Neo4j, kegunaannya, dan bagaimana penerapannya. Kami juga akan menginstal dan mengkonfigurasi instalasi di server Ubuntu 20.04. Neo4j adalah database grafis yang digunakan untuk membuat hubungan data. Contoh lain dari database grafis meliputi:

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

Apa itu Neo4j

Neo4j menghubungkan data saat disimpan, memungkinkan kami menjalankan kueri yang tidak pernah kami ketahui atau pikirkan sebelumnya. Sederhananya, Neo4j mencatat hubungan antara node data, sedangkan database relasional konvensional menggunakan kolom dan baris untuk menyimpan data terstruktur. Karena setiap node menyimpan referensi ke semua node lain yang terhubung dengannya, Neo4j dapat mengkodekan dan mengkueri hubungan yang kompleks dengan overhead yang minimal.

Neo Technology adalah pencipta dan pengembang perangkat lunak open-source Neo4j. Perusahaan telah mengembangkannya sejak tahun 2003. Ini ditulis dalam Java dan Scala, dan kode sumbernya tersedia secara gratis di GitHub. Pada 2015, ini dianggap sebagai sistem manajemen basis data grafis yang paling banyak digunakan saat ini. Neo4j menggunakan bahasa kuerinya sendiri yang disebut Cypher, tetapi kueri juga dapat ditulis dalam gaya lain, misalnya, melalui Java API.

Prasyarat

Untuk penginstalan ini, perangkat lunak memerlukan pengaturan dasar berikut.

  • RAM 8 GB dan server empat inti. Minimal, penggunaan yang disarankan adalah RAM 1 GB dan server inti tunggal.
  • Ubuntu 20.04 OS
  • Semua perintah dijalankan sebagai root. Jika Anda adalah pengguna biasa, perintah harus diawali dengan perintah sudo.

Instalasi Neo4j

Tambahkan Repositori

Ubuntu tidak secara resmi mengandung Neo4j dalam repositori paket standar. Kami akan menambahkan sumber paket yang menunjuk ke lokasi repositori Neo4j, lalu tambahkan kunci GPG dari Neo4j untuk verifikasi, lalu instal Neo4j itu sendiri.

Kita mulai dengan memperbarui daftar paket dan paket itu sendiri.

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

Tambahkan Perangkat Lunak Tambahan

Pada langkah ini, kita akan menginstal paket tambahan yang diperlukan untuk koneksi HTTPS. Aplikasi ini mungkin sudah terinstal secara default di sistem, tetapi masih perlu diperbarui.

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

apt-transport-https package memungkinkan penggunaan https melalui manajer paket menggunakan libapt-pkg Perpustakaan. Ini membuat instalasi tetap aman.

Verifikasi Kunci Keamanan

Sekarang kami menambahkan kunci keamanan resmi untuk repositori paket Neo4j. Kunci ini memeriksa dan memverifikasi apa yang Anda instal berasal dari repositori resmi.

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

Tambahkan Repositori

Tambahkan repositori Neo4j resmi ke daftar manajer paket.

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

Instal Neo4j

Saat menginstal Neo4j dan semua dependensinya, penting untuk dicatat bahwa instalasi akan meminta kita untuk menginstal paket Java agar berfungsi dengan Neo4j. Selama penginstalan, tekan Y. untuk menerima penginstalan perangkat lunak ini. Jika Anda telah menginstal Java, penginstal akan memahami dan melewatkan langkah ini.

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

Mulai Layanan Neo4j

Setelah kami menginstalnya, kami harus mengaktifkannya sebagai layanan 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:~#  

Periksa Status Neo4j

Selanjutnya, kami memverifikasi bahwa semuanya berfungsi seperti yang diharapkan.

 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 

Uji Koneksi DB

Karena kami telah menginstal Neo4j dan memulainya sebagai layanan, sekarang kami akan menguji koneksi database dan mengonfigurasi pengguna admin.

Catatan:Kami menggunakan versi Neo4j Edisi Komunitas gratis. Ini mendukung pekerjaan simultan dengan database yang sama, tetapi tidak termasuk menetapkan peran dan izin kepada pengguna.

Bekerja Dengan Neo4j

Untuk berinteraksi dengan database, kami akan meluncurkan utilitas internal yang disebut cypher-shell untuk bekerja dengan Neo4j. Saat pertama kali kita menjalankannya, kita akan diminta memasukkan user dan password. Secara default, nama pengguna adalah neo4j, dan kata sandinya adalah neo4j. Setelah login pertama, Anda akan diminta untuk mengubah kata sandi menjadi salah satu pilihan Anda.

 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>  

Untuk keluar, gunakan perintah keluar.

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

Tambahkan Node 

Mari kita siapkan beberapa node sampel dan tentukan hubungan di antara mereka. Terhubung menggunakan 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>  

Selanjutnya, mari tambahkan node bernama Liquidweb dan nama rekan kerja yang bekerja untuk perusahaan ini dengan nama Margaret. Kita dapat melakukannya dengan menggunakan perintah CREATE, dan sintaksnya adalah sebagai berikut.

 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>  

Tambahkan Pengguna

Mari tambahkan beberapa kolega lagi dan tautkan mereka ke perusahaan tempat mereka bekerja, Liquidweb. Kami akan terhubung menggunakan perintah 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>  

Membuat Hubungan

Karena Peter dan Chris bekerja di departemen yang sama dan memiliki properti yang sama dengan node, kami akan membuat hubungan dengan kolom nama.

 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 - Ini menunjukkan korespondensi node. Dalam hal ini, dalam satu perusahaan Liquidweb
  • DI MANA - di antara nilai
  • BUAT - buat dan tambahkan
  • KEMBALI - Kembali ke pangkalan.

Sekarang buat koneksi antara John dan Chris, meskipun mereka berada di departemen yang berbeda, tetapi mereka mengerjakan proyek yang sama.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>  

Info Tampilan

Sekarang kita akan menampilkan semua data ini dan hubungannya menggunakan kueri berikut.

 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>  

Kami menerima data keluaran dengan hubungan FRIEND berikut, yang menunjukkan hubungan dan hubungan data berikut antara DEPARTMENT dan PROJECT.

Untuk keluar dari cypher shell, jalankan perintah exit.

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

Mengatur Koneksi Jarak Jauh Aman ke Neo4j

Kami tidak akan selalu dapat terhubung ke database dari server itu sendiri. Jika kita ingin mengonfigurasi aplikasi untuk menggunakan Neo4j, kita perlu mengonfigurasinya agar terhubung dengan aman ke server lain. Selain itu, kita harus mengonfigurasi firewall untuk membatasi server mana yang dapat dilampirkan ke Neo4j.

Secara default, Neo4j terhubung melalui localhost (127.0.0.1 - localhost - ditujukan untuk menguji aplikasi tanpa bekerja dengan server lain). Juga, pekerjaan Neo4j dari localhost tidak akan terbuka untuk akses publik ke Internet. Hanya pengguna dengan akses ke jaringan lokal yang dapat terhubung ke Neo4j.

Konfigurasi Neo4j

Agar Neo4j dapat terhubung ke server lain, kita perlu mengubah pengaturan file konfigurasi /etc/neo4j/neo4j.conf . Kami akan menggunakan editor nano untuk tugas ini. Ingat, jika Anda bukan root, gunakan perintah sudo.

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

Temukan baris di bagian Konektor jaringan

#dbms.default_listen_address=0.0.0.0

Batalkan komentar pada baris ini dengan menghapus simbol # lalu tekan Ctrl + S dan Ctrl + X untuk menyimpan dan keluar dari editor.

Nilai 0.0.0.0 akan mengikat Neo4j ke semua antarmuka jaringan IPv4 yang tersedia. Anda dapat menempatkan alamat IP atau jaringan tertentu yang digunakan server Anda sebagai jalur data. Anda juga dapat mengonfigurasinya untuk menggunakan antarmuka IPv6, tetapi ada banyak nuansa pengaturan itu. Kami menyarankan Anda membaca dokumentasi di situs web resmi.

Konfigurasikan Firewall untuk Koneksi Jarak Jauh

Untuk mengkonfigurasi perangkat lunak Neo4j untuk koneksi jarak jauh, kita harus mengkonfigurasi firewall. Kami membatasi akses sehingga hanya sistem tepercaya yang dapat terhubung dengannya. Dalam hal ini, kita akan menggunakan firewall default Ubuntu, UFW.

Selanjutnya, kita harus memeriksa untuk melihat apakah firewall diaktifkan. Jika tidak aktif, kita harus mengaktifkannya.

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

Neo4j membuat dua soket jaringan saat menginstal perangkat lunak. Satu di port 7474 untuk antarmuka HTTP dan satu lagi untuk protokol utama di port 7687. Neo4j merekomendasikan penggunaan port 7687. Perintah untuk membuka port akan mirip dengan perintah berikut yang digunakan untuk mengizinkan alamat 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 

Masukkan rentang jaringan spesifik Anda untuk membuka port. Untuk alamat IPv6, perintahnya akan terlihat seperti ini.

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

IP di atas digunakan sebagai contoh. Ganti nilai Anda dan tambahkan aturan.

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

Mulai Ulang Firewall

Pastikan untuk memulai ulang firewall Anda.

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

Verifikasi Koneksi

Sekarang mari kita periksa untuk melihat apakah itu berfungsi dengan benar.

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

Dan dengan itu, kami memiliki server Neo4j yang berfungsi yang siap digunakan dan dikonfigurasi untuk mengizinkan akses pada port 7687.

Kesimpulan

Kami bertemu dengan database grafis Neo4j, mempelajari cara kerjanya dan mengapa dibutuhkan. Siapkan manajer paket dan kemudian instal Neo4j. Selanjutnya, kami memeriksa fungsionalitasnya, masuk ke dalamnya, dan mengubah kata sandinya. Kami mencoba perintah dasar tentang cara membuat tabel, membuat hubungan, dan mengatur node. Pada akhirnya, kami mengonfigurasi koneksi ke IP yang kami butuhkan dan mengonfigurasi firewall untuk keamanan.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bug T-SQL, perangkap, dan praktik terbaik – berputar dan tidak berputar

  2. Indikator Kunci Desain Masalah

  3. Menerapkan Aturan Bidang Menggunakan Klasifikasi

  4. Bagaimana Rencana Paralel Memulai – Bagian 1

  5. Cara Mendapatkan Semua Kemungkinan Kombinasi Baris Dari dua Tabel di SQL