sql >> データベース >  >> RDS >> Database

Ubuntu20.04にNeo4jをインストールする方法

    はじめに

    このチュートリアルでは、Neo4jとは何か、Neo4jの用途、および実装方法について説明します。また、Ubuntu20.04サーバーにインストールして構成します。 Neo4jは、データ関係を作成するために使用されるグラフィカルデータベースです。グラフィカルデータベースの他の例は次のとおりです。

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

    Neo4jとは

    Neo4jは、保存されているデータを接続し、これまで知らなかった、または考えたことのないクエリを実行できるようにします。簡単に言うと、Neo4jはデータノード間の関係を記録しますが、従来のリレーショナルデータベースは列と行を使用して構造化データを格納します。各ノードは、接続されている他のすべてのノードへの参照を格納するため、Neo4jは、最小限のオーバーヘッドで複雑な関係をエンコードおよびクエリできます。

    Neo Technologyは、オープンソースソフトウェアNeo4jの作成者および開発者です。同社は2003年から開発を続けています。JavaとScalaで記述されており、ソースコードはGitHubから無料で入手できます。 2015年現在、これは現在使用されている最も利用されているグラフィカルデータベース管理システムと見なされています。 Neo4jはCypherと呼ばれる独自のクエリ言語を採用していますが、クエリはJavaAPIなどを介して他のスタイルで作成することもできます。

    前提条件

    このインストールでは、ソフトウェアに次のベースライン設定が必要です。

    • 8GBのRAMと4コアのサーバー。少なくとも、推奨される使用法は1GBのRAMとシングルコアサーバーです。
    • Ubuntu 20.04 OS
    • すべてのコマンドはrootとして実行されます。通常のユーザーの場合、コマンドの前にsudoコマンドを付ける必要があります。

    Neo4jのインストール

    リポジトリの追加

    Ubuntuは、標準パッケージリポジトリにNeo4jを公式に含んでいません。 Neo4jリポジトリの場所を指すパッケージソースを追加し、検証のためにNeo4jからGPGキーを追加してから、Neo4j自体をインストールします。

    まず、パッケージのリストとパッケージ自体を更新します。

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

    追加のソフトウェアを追加する

    このステップでは、HTTPS接続に必要な追加のパッケージをインストールします。このアプリケーションはデフォルトでシステムにすでにインストールされている可能性がありますが、それでも更新する必要があります。

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

    apt-transport-https packageは、 libapt-pkgを使用してパッケージマネージャーを介してhttpsを使用できるようにします。 図書館。これにより、インストールが安全に保たれます。

    セキュリティキーの確認

    次に、Neo4jパッケージリポジトリの公式セキュリティキーを追加します。このキーは、インストールしているものが公式リポジトリからのものであることを確認します。

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

    リポジトリの追加

    公式のNeo4jリポジトリをパッケージマネージャーリストに追加します。

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

    Neo4jをインストールする

    Neo4jとそのすべての依存関係をインストールする場合、インストールにより、Neo4jで動作するJavaパッケージをインストールするように求められることに注意する必要があります。インストール中にYを押して、このソフトウェアのインストールを受け入れます。 Javaがインストールされている場合、インストーラーはこの手順を理解してスキップします。

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

    Neo4jサービスを開始する

    インストールしたら、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:~#  

    Neo4jステータスの確認

    次に、すべてが期待どおりに機能していることを確認します。

     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 

    DB接続のテスト

    Neo4jをインストールしてサービスとして開始したので、データベース接続をテストし、管理者ユーザーを構成します。

    注:無料のCommunityEditionNeo4jバージョンを使用しています。同じデータベースでの同時作業をサポートしますが、ユーザーへの役割と権限の割り当ては含まれません。

    Neo4jの操作

    データベースと対話するために、Cypher-shellと呼ばれる内部ユーティリティを起動してNeo4jを操作します。最初に実行するときに、ユーザーとパスワードの入力を求められます。デフォルトでは、ユーザー名はneo4jで、パスワードはneo4jです。最初のログイン後、パスワードを選択したものに変更するように求められます。

     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>  

    終了するには、exitコマンドを使用します。

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

    ノードの追加

    いくつかのサンプルノードを設定し、それらの間の関係を定義しましょう。サイファーを使用して接続する

     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>  

    次に、Liquidwebというノードと、この会社で働いている同僚の名前をMargaretという名前で追加しましょう。これはCREATEコマンドを使用して行うことができ、構文は次のようになります。

     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>  

    ユーザーの追加

    さらに数人の同僚を追加して、彼らが働いている会社であるLiquidwebにリンクしましょう。 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>  

    関係を作成する

    PeterとChrisは同じ部門で働いており、ノードと同じプロパティを持っているため、名前列との関係を作成します。

     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-これはノードの対応を示します。この場合、1つの会社内でLiquidweb
    • 場所-値の間
    • 作成-作成して追加
    • RETURN-ベースに戻ります。

    ここで、ジョンとクリスの間に接続を作成します。ただし、彼らは異なる部門に属していますが、同じプロジェクトに取り組んでいます。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>  

    情報の表示

    次に、次のクエリを使用して、このすべてのデータとそれらの関係を表示します。

     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>  

    DEPARTMENTとPROJECTの関係と次のデータ関係を示す次のFRIEND関係の出力データを受け取りました。

    サイファーシェルを終了するには、exitコマンドを実行します。

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

    Neo4jへの安全なリモート接続を設定する

    サーバー自体からデータベースに接続できるとは限りません。 Neo4jを使用するようにアプリケーションを構成する場合は、他のサーバーに安全に接続するようにアプリケーションを構成する必要があります。また、Neo4jに接続できるサーバーを制限するためにファイアウォールを構成する必要があります。

    デフォルトでは、Neo4jはローカルホストを介して接続します(127.0.0.1-ローカルホスト-他のサーバーと連携せずにアプリケーションをテストすることを目的としています)。また、ローカルホストからのNeo4jの作業は、インターネットへのパブリックアクセスに公開されません。ローカルネットワークにアクセスできるユーザーのみがNeo4jに接続できます。

    Neo4jを構成する

    Neo4jを他のサーバーに接続するには、構成ファイル /etc/neo4j/neo4j.confの設定を変更する必要があります。 。このタスクにはnanoエディターを使用します。 rootでない場合は、sudoコマンドを使用することを忘れないでください。

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

    ネットワークコネクタセクションで回線を見つけます

    #dbms.default_listen_address=0.0.0.0

    #記号を削除してこの行のコメントを解除し、Ctrl+SおよびCtrl+Xを押して保存し、エディターを終了します。

    0.0.0.0の値は、Neo4jを使用可能なすべてのIPv4ネットワークインターフェイスにバインドします。サーバーがデータパスとして使用する特定のIPアドレスまたはネットワークを配置できます。 IPv6インターフェースを使用するように構成することもできますが、その設定には多くのニュアンスがあります。公式ウェブサイトのドキュメントを読むことをお勧めします。

    リモート接続用のファイアウォールの構成

    リモート接続用にNeo4jソフトウェアを構成するには、ファイアウォールを構成する必要があります。信頼できるシステムのみが接続できるように、アクセスを制限します。この場合、デフォルトのUbuntuファイアウォールであるUFWを使用します。

    次に、ファイアウォールがアクティブになっているかどうかを確認する必要があります。アクティブでない場合は、有効にする必要があります。

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

    Neo4jは、ソフトウェアのインストール時に2つのネットワークソケットを作成します。 1つはHTTPインターフェイス用のポート7474に、もう1つはポート7687のプライマリプロトコル用です。Neo4jはポート7687の使用を推奨しています。ポートを開くコマンドは、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 

    特定のネットワーク範囲を入力して、ポートを開きます。 IPv6アドレスの場合、コマンドは次のようになります。

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

    上記のIPは例として使用されます。値を置き換えてルールを追加します。

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

    ファイアウォールを再起動

    必ずファイアウォールを再起動してください。

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

    接続の確認

    それでは、正しく機能しているかどうかを確認しましょう。

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

    これで、すぐに使用できるNeo4jサーバーが稼働し、ポート7687でのアクセスを許可するように構成されました。

    結論

    Neo4jグラフィカルデータベースに会い、それがどのように機能し、なぜそれが必要なのかを学びました。パッケージマネージャーをセットアップしてから、Neo4jをインストールします。次に、機能を確認して調べ、パスワードを変更しました。テーブルの作成方法、リレーションシップの作成方法、およびノー​​ドの設定方法に関する基本的なコマンドを試しました。最後に、必要なIPへの接続を構成し、セキュリティのためにファイアウォールを構成しました。


    1. Javaコードを介してOracleSQLスクリプトを実行する方法

    2. MySQL MariaDB –一時テーブルを使用したクエリ

    3. SQLとMySQLの違いは何ですか

    4. MySQL SIN()関数–MySQLの数値の正弦を返します