node.js アプリとペアリングするデータベースを探しています。私は、json/nosql db がリレーショナル DB よりも望ましいと想定しています [json/sql インピーダンスの不一致なしで行うことができます]。私は考えています:
- カウチデブ
- モンゴッド
- レディス
上記のnode.jsとの互換性/展開可能性について、意見/戦争の話はありますか? 明確なお気に入りはありますか?
私は、node.js の mongodb ドライバーの開発者です。私は自分のプロジェクトに mongodb を使用していますが、mongodb のパフォーマンスには非常に満足しています。
(恥知らずプラグ) ドライバーに関するご質問は、
またはここStackoverflowで
node.js を楽しんでください。私はプラットフォームが大好きです:D
どの機能を選択するかは、目的の機能によって大きく異なりますが、CouchDB のネイティブ JavaScript 環境には本当に感謝しています。データとビューの両方が JavaScript で記述されているため、node.js に非常に適していると思います。
利用可能なさまざまなクライアント ライブラリもあり、かなり低レベルのものもあれば、非常に抽象化されたものもあります。
しかし、前述したように、データベースに必要な機能についても考慮する必要があります。
Redis は一般的な選択肢です。あなたが求めているのは、ブロックしないデータベース ドライバーです。
あなたがリストしたデータベースはすべて非常に異なっています。Redis は、キーと値のストレージのアイデアを取り入れて実行し、さまざまなデータ型とデータのクエリ方法を追加します。多くの場合、redis も非常にうまくスケールダウンします。つまり、実行する能力があるにもかかわらず、オーバーヘッドが非常に低いということです。
利用可能なデータベース モジュールのリストは次のとおりです: http://wiki.github.com/ry/node/modules#database
私はCouchDBがとても好きです。少し習得が必要ですが、ビューの使い方を理解すれば、ビューは非常に強力です。githubと npm には、非常に使いやすいcradleというモジュールがあります。どれだけ速いかはまだテストできていませんが、非常に柔軟です (必要に応じて、ブラウザからデータにアクセスすることもできます)。
ここでの主な問題は、どのデータベース設計がアプリケーションにとって意味があるかということです。本質的に主にキー値であるデータはありますか? その場合は、Redis を使用してください。すべてのドキュメントが必ずしも同じフィールドを持っているとは限らないデータがありますか? その場合は、CouchDB などの NoSQL データベースを使用してください。
ブロッキングデータベースを使用することの次に悪いことは、データに間違ったデータベースを使用することです. CouchDB は Apache によって管理されているため、高品質であることはわかりますが、データが SQL テーブルまたは単純なキーと値のストアでより意味のあるものである場合は、CouchDB を使用しても意味がありません。
ユースケースを考えてください。全文検索を実行したい、単にデータをキーで取得したい、または類似した属性を持つドキュメントの範囲を取得したいと思う可能性が高くなりますか?
Node.js の高レベルの永続性/データベース システムであるPersistenceを確認してください。
Persistence は、プロセス実行間でデータを永続化するための高レベル API を許可するプロジェクトです。目標は、使いやすく、強力で、柔軟な、または可能であれば上記のすべてを備えたバックエンドをサポートすることです。
サポートされているデータベースは次のとおりです。
- PostgreSQL - エンタープライズ レベルのリレーショナル データベース。ドライバーは純粋な JavaScript で実装され、PostgreSQL ワイヤ プロトコルを使用して TCP 経由で通信します。
- Sqlite3 - シンプルで高速なサーバーレスのリレーショナル データベース. このドライバーは、コマンドライン sqlite3 プログラムのラッパーです。パスに sqlite3 が必要です。通信は非常に高速ですが、型はあまり正確ではありません。文字列と null のみが返されます。
- MongoDB - スケーラブルで高性能なオープン ソースのスキーマフリーのドキュメント指向データベース. このドライバーは、JavaScript でワイヤ プロトコルも実装し、TCP 経由でサーバーと通信します。
- JSON-DB - JSON オブジェクトを含む単純なフラット ファイルを使用する、独自のシステム スキーマフリーでドキュメント指向のデータベースです。これには、ノードとファイルシステム以外の要件はまったくありません。パフォーマンスは、完全に実装された後に決定されます。
免責事項:私は著者です。
おそらく、ここで発表されたBarricaneDBをご覧ください。
正しい解決策が、データベースをWebスタックにマッピングすることだけに焦点を当てることであるかどうかはわかりませんが、アプリケーション固有の要件も考慮することです。
Twitterフィードやその他の大量のデータのパターンを分析していますが、トランザクションのサポートは必要ありませんか?次に、本当に速いものを選びます。
いくつかの本当に基本的な情報をいくつかのテーブルに保存したいだけで、現在は「エンタープライズ向け」アプリではありませんか?次に、学ぶために何かクールなものを選びます。
クライアントにとって非常に重要で、堅牢で、トランザクションである必要があり、リモートホスティング機能などへのライブレプリケーションが必要なデータを保存する場合があります。次に、postgresqlのようなものを見てください。それもミラーリングされませんが、node.jsドライバーは非常にうまく機能し、SQLを致命的に恐れていない場合は、必要なものを簡単に取得できます。
私自身の意見としては、node.js(php / javaの従来のフレームワークと比較して)のような新しいスタックを使用すると、一度に追加のレイヤーを追加するべきではないほどの「新しい」複雑さが追加されると思います。これは、次のことを説明する優れた記事です。
私の経験からお話ししましょう。CouchDB には明確な学習曲線がありますが、MongoDB は学習とセットアップが非常に簡単であることがわかりました。私はredisを使用したことがありません。私は MongoDB をお勧めします - しかし、それはおそらく恥知らずなファンボーイ主義です - 私には数がありません、へー、使いやすさの主張だけです。
さらに考慮すべき点:
グローバル:http://globalsdb.org
GT.M(開始点についてはhttps://github.com/robtweed/node-mwireを参照してください)
M / DB(SimpleDBのオープンソースクローン):https ://github.com/robtweed/node-mdb およびNode.js SimpleDBクライアントを使用してアクセスできます:https ://github.com/rjrodger/simpledb
dirty は、もう 1 つのフラット ファイル キー値ストアです。その名前が示すように、単純なケースでは迅速で汚れていますが、パフォーマンスの高いソリューションです。私は作者ではありません:)