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グループに投稿しください。



All Articles