OrientDB-初心者向けのグラフの簡単な使用例

OrientDBは、リレーショナルデータベースの操作に慣れている人の外観です。
OrientDBは、Javaで実装されたグラフィカルなドキュメント指向データベースであることを思い出させてください。

私は初心者向けの記事を書くことにしました。なぜなら、最初はそれが最も難しいが、ロシア語だからです。 読みやすい例のある紹介記事は実質的にありません。

orientDBのダウンロード方法を伝える必要はないと思いますが、 念のためにwww.orientechnologies.com/download
この記事では理論について話したくありません。多くの人がOrientDBを感じて、少なくとも少し理解したいようです。 しかし、ロシア語で少し理論を知りたい人のために、未完成の記事があります。
それでは、まずorientDB-serverを起動します:
/programs/orientDB/bin/server.sh

第二に、orientDBコンソールに行きましょう:
/programs/orientDB/bin/console.sh

第三に、ルートパスワードを見つける必要があり、それはファイルに登録されます:
/config/orientdb-server-config.xml

「パスワード」の行を探してください。すぐにすべてが理解できます。
パスワードがわかれば、データベースを作成できます。
orientdb>データベースのリモート作成:localhost / people root PASWORD local

構文は次のとおりです。
データベース<database-url> <user> <password> <storage-type> [<db-type>]を作成します

データベースに関する情報を見てみましょう。
orientdb {people}>情報

標準クラスを作成すると、クラスターとインデックスが表示されることがわかります。

頂点-ピーク


個人クラス(Person)を作成します。
クラスPersonを作成してVを拡張します

注:Vertex(頂点)のようなクラスを作成しました
文字列プロパティ名をクラスに追加します
プロパティPerson.name文字列を作成します

2つの頂点を作成します。
頂点の個人セット名を作成=「Joanie」
頂点の個人セット名を作成=「Chachie」

EDGE-リブ



私が翻訳しようとしていた記事では、著者がクラスを作成し、そのクラスでこれらの人物間の関係を示します
クラスを作成すると、Eが拡張されます

実際、このクラスは何の役割も果たさず、作成する必要はありません(まだ必要ありません)。
個人間に1つの接続を追加します。
#11:1から#11:0のエッジが大好き

EDGE(エッジ)関係を作成したことに注意してください。
だから、私たちは2人をつないだので、作業を確認します。

  orientdb {people}>人から選択

 ---- + ----- + ------- + -------- + ---------
 #| @ RID |名前| in_Loves | out_Loves

 ---- + ----- + ------- + -------- + ---------
 0 |#11:0 |ジョアニー|#11:1 | null     
 1 |#11:1 | Chachie | null |#11:0    

 ---- + ----- + ------- + -------- + --------- 

Personクラスに2つのフィールドが表示されていることに注意してください。

これらのフィールドは自動的に作成されます。作成を拒否することはできません。 これらのフィールドでは、人のつながり(@ RID)を見ることができますが、これは私たちに何をもたらしますか? そして、これにより、たとえばクエリを作成する場合、これらのフィールドにオブジェクトとしてアクセスできることがわかります。

  orientdb {people}>名前を選択、in_Loves.nameをin、out_Loves.nameをPersonから選択

 ---- + ----- + ------- + ------- + ------
 #| @ RID | name | in | out   

 ---- + ----- + ------- + ------- + ------
 0 |#-2:1 | Joanie | Chachie | null  
 1 |#-2:2 | Chachie | null | Joanie

 ---- + ----- + ------- + ------- + ------ 

@ RIDリンクではなく、関連オブジェクトからのデータを取得します。
注意してください、 PersonクラスはVから継承されるため、すべての通信データもVに存在します。

  orientdb {people}> Vから選択        

 ---- + ----- + ------- + -------- + ---------
 #| @ RID |名前| in_Loves | out_Loves

 ---- + ----- + ------- + -------- + ---------   
 5 |#11:0 |ジョアニー|#11:1 | null     
 6 |#11:1 | Chachie | null |#11:0    

 ---- + ----- + ------- + -------- + --------- 

OrientDBを少し研究したことがある人は尋ねるかもしれませんが、E(EDGE)についてはどうでしょうか、なぜエッジがそこに登録しなかったのですか?
すべてが非常に単純なので、接続がEに登録されるように、エッジに名前を付ける必要があります。 つまり 私たちは書いた:
#11:1から#11:0のエッジが大好き

しかし、書く必要がありました:
#11:1から#11:0にエッジを作成MyFieldName = 1を設定

さらに、Lovesクラスを作成し(上記を参照)、クラス名を示すリンクを作成できます。
#11:1から#11:0までのエッジを作成しますMyFieldName = 1を設定します

したがって、フィールド名(MyFieldName)を指定することで(1つのクラス内の)関係のタイプを区別でき、クラス名を指定することで、クラスごとに関係のタイプをさらに区別できます。 ただし、クラスEでは、すべての種類の接続が常に示されます。 このクラスから拡張します(Lovesクラスの作成方法に注意してください)。
皆さんの中には、すべてのデータが同じ場合にクラスEから拡張する必要があると言う人もいます。
また、私はこの質問をし、OrientDBの作者はこのように答えました。プラスは、OrientDBはグラフを使用してより適切にパーティション分割されることであり、もちろんこれはデータサンプリングの速度に影響します。
パーティション化とは、選択した基準に従って、大きなテーブルを論理部分にパーティション化することです。
この記事が気に入ったら、続編を準備できます。
皆さん、幸運を祈ります。質問がある場合は、コメントするか、OrientDBグループに投稿しください。

Source: https://habr.com/ru/post/J214837/


All Articles