免責事項:OrientDBは推奨しなくなりました。以下のコメントを参照してください。
ArangoDBとOrientDBの両方を使用したので、少し偏りの少ない意見を提供できます。私はOrientDBのnode.jsドライバーの作成者であるため、まだ偏っています- oriento しかし、会社にも製品にも既得権はありません。私は必ずしもOrientDBを使用していますmore。
ArangoDBとOrientDBはどちらも同様の市場をターゲットにしており、多くの類似点があります。
- どちらもマルチモデルであり、ドキュメント、グラフ、単純なキー/値を保存するために使用できます。
- どちらも Gremlin をサポートしていますが、独自の優先クエリ言語と比較すると、間違いなく二級市民です。
- どちらもJavaScriptでサーバー側の「ストアドプロシージャ」をサポートしています。どちらのシステムでも、これは慣用的なJavaScript APIよりもわずかに少ないものですが、ArangoDBの方がはるかに優れています。これは、OrientDBの次のバージョンで修正されています。
- どちらもREST APIを提供し、どちらもJavaScriptリクエストハンドラーを介して「APIサーバー」として使用できるようにすることを目的としています。これは、OrientDBよりもArangoDBではるかに実用的です。
- どちらもパーミッシブライセンスの下で配布されます。
- どちらもACIDであり、トランザクションをサポートしていますが、どちらのトランザクションもサーバー側の操作です。従来のRDBMSで使用されていた種類のトランザクションというよりは、コマンドのアトミックバッチに似ています。
ただし、多くの違いがあります。
- ArangoDBには、OrientDBの非常に便利な機能である「リンク」の概念がありません。それらは、エッジのオーバーヘッドなしに、(Web上のハイパーリンクのように)一方向の関係を可能にします。
- ArangoDBはC++(およびJavaScript)で記述されていますが、OrientDBはJavaで記述されています。どちらにも利点があります:
- C++で記述されているということは、ArangoDBがV8を使用していることを意味します。これは、node.jsとGoogleChromeを強化するのと同じ高性能JavaScriptエンジンです。 Javaで記述されている場合、OrientDBはNashornを使用しますが、これはまだ高速ですが、最速ではありません。これは、ArangoDBがOrientDBと比較してnode.jsエコシステムとの互換性を高めることができることを意味します。
- Javaで記述されているということは、OrientDBがRaspberry Piなど、より多くのプラットフォームで実行されることを意味します。また、OrientDBは、Javaで記述された他の多くのテクノロジーを活用できることを意味します。たとえば、OrientDBは優れたフルテキスト/地理空間を備えています。 Luceneを介した検索サポート。これはArangoDBでは利用できません。
- OrientDBはクエリ言語としてSQLの方言を使用しますが、ArangoDBはAQLと呼ばれる独自のカスタム言語を使用します。理論的には、AQLは問題のために明示的に設計されているため、実際にはSQLに非常に似ていますが、キーワードが異なり、学習する別の言語ですが、OrientDBの実装はSQLに慣れている場合ははるかに快適です。 。 SQLは宣言型ですが、AQLは必須です-ここではYMMVです。
- ArangoDBは「ほとんどメモリ」のデータベースであり、ほとんどのデータがRAMに収まる場合に最適に機能します。これは、ニーズに適している場合とそうでない場合があります。 OrientDBにはこの制限はありません(RAMも大好きです)。
- OrientDBは完全にオブジェクト指向であり、プロパティと継承を持つクラスをサポートします。これは、ActiveRecordのような醜いハックを必要とせずに、データベース構造をアプリケーション構造に1-1でマップできることを意味するため、非常に便利です。 ArangoDBは、Foxxのモデルを介してかなり類似したものをサポートしますが、データベースの動作のコア部分というよりは、オプションのアドオンのようなものです。
- ArangoDBは、 Foxx を介して多くの柔軟性を提供しますが、サーバー側のJSのバックグラウンドが強い人々によって設計されたものではなく、多くの場合、車輪を再発明します。 express のようなフレームワークをリクエスト処理に利用するのではなく、 Sinatra の独自のクローンを作成しました。これにより、もちろん、expressとほぼ同じになります(expressもSinatraクローンです)。 )、ただし微妙に異なり、Expressのミドルウェアやプラグインを再利用できないことを意味します。同様に、それらはV8を埋め込みますが、libuvは埋め込みません。つまり、node.jsと同じノンブロッキングAPIを提供しないため、ユーザーは特定のnpmモジュールがそこで機能するかどうかを確信できません。これは、重要なアプリケーションがバックエンドの代わりにArangoDBを使用できないことを意味し、Foxxの潜在的な有用性の多くを否定します。
- OrientDBは、ファーストクラスのプロパティレベルとデータベースレベルのインデックスをサポートしています。効率を最大化するために、クエリを実行して特定のインデックスに直接挿入できます。 ArangoDBでこれがサポートされているのを見たことがありません。
- OrientDBはより確立されたオプションであり、多くの著名なユーザーがいます。 ArangoDBは新しく、あまり知られていませんが、急速に成長しています。
- ArangoDBのドキュメントは優れており、さまざまなプログラミング言語の公式ドライバーを提供しています。 OrientDBのドキュメントはそれほど良くはなく、ほとんどのプラットフォーム用のドライバーがありますが、それらはコミュニティを利用しているため、最先端のOrientDB機能を常に最新の状態に保つとは限りません。
- Java(またはa Javaブリッジ))を使用している場合は、OrientDBをライブラリとしてアプリケーション内に直接埋め込むことができます。このユースケースは不可能です。 ArangoDBで。
- OrientDBには、ユーザーとロール、および レコードレベルのセキュリティ の概念があります。これはあなたにとってキラーな機能かもしれません、それは私にとってです。また、トークンベースの認証もサポートしているため、OrientDBをユーザーの承認/認証の主要な手段として使用することができます。 OrientDBにはLDAP統合もあります。対照的に、ArangoDBは非常に単純な認証オプションのみをサポートします。
どちらのシステムにも独自の利点があるため、どちらを選択するかは、それぞれの状況に依存します。
小さなアプリケーションを構築していて、開発者の生産性を最適化するWeb開発者である場合は、ArangoDBを使用してすばやく起動して実行する方がおそらく簡単です。
数ギガバイトまたはテラバイトのデータを格納する可能性のある、または数千の同時ユーザーがいる、「エンタープライズ」ユースケースがある、またはきめ細かいセキュリティ制御が必要な、より大きなアプリケーションを構築している場合は、OrientDBが最適です。
RDFまたは同様に構造化されたリンクトデータを保存する場合は、OrientDBを選択します。
Javaを使用している場合は、OrientDBを選択するだけです。
注:これは(私の意見)今日のプレーの状態であり、物事は急速に変化し、冷酷な効率を過小評価することはありませんArangoDBの背後にある素晴らしいチームの中で、私はそれが完全には存在しないと思いますまだ:)
チャールズピック(codemix.com)