回答:
私は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テーブルや単純なKey-Valueストアでデータが意味をなす場合は、それを使用しても意味がありません。
ユースケースを考えてみてください。全文検索を実行する、キーでデータを取得する、または類似した属性を持つドキュメントの範囲を取得する可能性が高くなりますか?
node.jsの高レベルの永続性 /データベースシステムである永続性をチェックしたい場合があります。
永続性は、プロセス実行間でデータを永続化するための高レベル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