Node.jsアプリとペアリングするデータベースを探しています。私はjson/nosql dbがリレーショナルDBよりも望ましいと想定しています[json/sqlインピーダンスの不一致がなくても実行できます]。私は検討しています:
誰もがnode.jsで上記の互換性/展開可能性についての意見/戦争ストーリーを持っていますか?明確なお気に入りはありますか?
私はnode.jsのmongodbドライバーの開発者です。私は自分のプロジェクトにmongodbを使用していますが、mongodbのパフォーマンスに非常に満足しています。
(恥知らずのプラグ)ドライバーについての質問はお気軽に
またはここStackoverflowで
Node.jsをお楽しみください。プラットフォームが大好きです:D
選択は、使用する機能に大きく依存しますが、ネイティブのJavaScript環境のCouchDBには本当に感謝しています。データとビューの両方がJavaScriptで記述されているため、私の意見ではnode.jsに非常に適しています。
また、さまざまな クライアントライブラリ が利用可能です。一部はかなり低レベルで、他は非常に抽象化されています。
しかし、私が言ったように、データベースに必要な機能についても考えるべきです。
Redisは人気のある選択肢です。あなたが望んでいるのは、ブロックしないデータベースドライバーです。
リストしたデータベースはすべて非常に異なっています。 Redisは、キーと値のストレージの概念を取り入れて実行し、さまざまなデータ型とデータのクエリ方法を追加します。多くの場合、redisは非常にうまく縮小されることに注意してください。つまり、実行する能力があるにもかかわらずオーバーヘッドが非常に低いことを意味します。
利用可能なデータベースモジュールのリストは次のとおりです。 http://wiki.github.com/ry/node/modules#database
私はCouchDBが本当に好きです。少し学習曲線ですが、ビューを使用する方法を理解すると、ビューは非常に強力になります。 githubのクレードル と呼ばれるモジュールとnpmがあり、作業が非常に簡単です。私はそれがどれほど高速であるかをテストすることができませんでしたが、それは本当に柔軟です(必要に応じてブラウザでデータにアクセスすることもできます)。
ここでの主要な問題は、どのデータベース設計がアプリケーションにとって意味があるかです。本質的にキーバリューのデータがありますか?その場合、Redisを使用します。すべてのドキュメントに必ずしも同じフィールドがあるわけではないデータがありますか?その場合、CouchDBなどのNoSQLデータベースを使用します。
ブロッキングデータベースを使用する場合の次に悪いことは、データに間違ったデータベースを使用することです。 CouchDBはApacheによって管理されているため、高品質であることはわかっていますが、データがSQLテーブルまたは単純なキーと値のストアでより意味をなす場合は使用する意味がありません。
ユースケースを考えてください。全文検索を実行したり、キーでデータを取得したり、同様の属性を持つドキュメントの範囲を取得したいでしょうか?
Persistence 、node.jsの高レベル永続性/データベースシステムをチェックアウトすることをお勧めします。
from thechangelog.com :
永続性は、プロセス実行間でデータを永続化するための高レベルAPIを許可するプロジェクトです。目標は、使いやすく、強力で、柔軟性のあるバックエンド、または可能であれば上記のすべてをサポートすることです。
サポートされているデータベースは次のとおりです。
- PostgreSQL-エンタープライズレベルのリレーショナルデータベース。このドライバーは純粋なJavaScriptで実装され、PostgreSQLワイヤプロトコルを使用してTCPで通信します。
- Sqlite3-シンプルで高速なサーバーレスリレーショナルデータベース。このドライバーは、コマンドラインsqlite3プログラムのラッパーです。パスにsqlite3が必要です。通信は非常に高速ですが、タイプはあまり正確ではありません。返されるのは文字列とnullのみです。
- MongoDB-スケーラブル、高性能、オープンソース、スキーマフリー、ドキュメント指向のデータベース。このドライバーは、JavaScriptでワイヤープロトコルを実装し、TCPを介してサーバーと通信します。
- JSON-DB-JSONオブジェクトを含む単純なフラットファイルを使用する、独自のシステムスキーマフリーのドキュメント指向データベース。これには、ノードとファイルシステム以外の要件はありません。パフォーマンスは、完全に実装されたら決定されます。
免責事項:私は著者です。
おそらく BarricaneDB アナウンス here をご覧ください。
正しい解決策は、データベースを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つのフラットファイルキー値ストアです。名前が示すように、それは簡単なケースのための迅速かつ汚いが、パフォーマンスの高いソリューションです。私は著者ではありません:)