node.jsデータベース[終了]


115

node.jsアプリとペアにするデータベースを探しています。私は、json / nosql dbがリレーショナルDBよりも好ましいと想定しています[json / sqlインピーダンスの不一致なしで実行できます]。私は考えています:

  • カウチ
  • Mongodb
  • redis

誰もが上記のnode.jsとの互換性/展開性についての見解/戦争の話を持っていますか?明確なお気に入りはありますか?


2
より広い要件が言及されている場合は、質問に回答すると役立つと思います。各DBには、独自の長所、短所、専門があります。仕様を教えてください!
Samyak Bhuta、2011

回答:


79

私はnode.js用のmongodbドライバーの開発者です。私は自分のプロジェクトでmongodbを使用しており、mongodbのパフォーマンスに非常に満足しています。

node.js用のMongodbドライバー

(恥知らずなプラグイン)ドライバーに関する質問はお気軽に

mongodbドライバーのGoogleグループ

またはここStackoverflowで

node.jsを楽しんでください。私はプラットフォームが大好きです:D


1
mongooseも見てください。これは、node.jsのmongodbドライバーの上に構築/使用するかなり良いORMです
タクシー

2
Node.js + MongoDBをかなり長い間使用していますが、順調に進んでいます。そして@christkvへの完全な称賛、ドライバーは堅実であなたを失敗させません。node.js / express.js + mongodbをEC2に簡単にデプロイしました。また、Mongooseは使用していません。課題について話します(すでにNodeが得意であると仮定します)、Mongoは、深刻なアプリケーションやサービス開発のために何か(クエリと集計)を行う方法が得意である必要があります。Mongoが他のDBとどのように異なるかを学ぶことは、まだ評価段階にある場合は、最初に行う必要があります。
Samyak Bhuta、2011

私が理解していることから、mongodbでの集約を高速化するために、いくつかの本当にクールな機能がラインアップされています。その1つがネイティブ集約関数です。 slideshare.net/cwestin63/mongodb-aggregation-mongosf-may-2011 と、それぞれのmap-reduceコマンドを独自のスレッドで実行できるようにするjavascriptエンジンのspidermonkeyの代わりにv8への可能な切り替え(さようなら、シングルスレッドのmap-reduce )
christkv

25

どちらを選択するかは、使用する機能に大きく依存しますが、CouchDBのネイティブJavaScript環境に本当に感謝しています。データとビューの両方がJavaScriptで記述されているため、私の意見ではnode.jsに非常によく適合します。

利用可能なクライアントライブラリもいくつかあります。いくつかはかなり低レベルのもので、他のものは非常に抽象化されています。

ただし、前述したように、データベースに必要な機能についても考慮する必要があります。


18

Redisは人気のある選択肢です。あなたが求めているのは、ブロックしないデータベースドライバーです。

リストしたデータベースはすべて非常に異なっています。Redisは、キー値ストレージの概念を取り入れて実行し、さまざまなデータ型とデータのクエリ方法を追加します。多くの場合、redisも非常によく縮小することに注意してください。つまり、実行能力はあるものの、オーバーヘッドが非常に低いということです。

利用可能なデータベースモジュールのリストは次のとおりです。http//wiki.github.com/ry/node/modules#database


はいRedisは素晴らしいですが、バイナリデータを格納できますが、取得できません。少なくとも、バイナリデータ用のRedisコマンドは見つかりませんでした。
AppleGrew 2011

本当に?以前は(NodeのBufferクラスを使用して)バイナリー・データを保管していましたが、正常に機能しました。Redis / Nodeのバージョンは何ですか?
DanielS

12
デフォルトでは、node_redisはすべてのコマンドに対してJavaScript文字列を返します。代わりにバッファを取得するには、createClient(port、host、{return_buffers:true});を使用してクライアントを作成します。
Matt Ranney、2011

4
@MattRanney、あなたは私に何時間も掘るのを節約しただけです!node-Redisのドキュメントのどこにもこれは見られず、文字通り5時間の時間を費やしていました。この瞬間に私の感謝は限りなくあります。
ghayes

理論的にはすべて良さそうに聞こえますが、実用的な例として、20秒ごとにクエリを実行して配列を返すJSON APIがあります。これをキャッシュできるようにしたいのですが、Redisを使い続けますか?また、この配列であいまい検索を行う必要があります
PirateApp

15

私はCouchDBが本当に好きです。少し学習曲線ですが、ビューの使い方を理解すると、ビューは非常に強力になります。githubとnpmにはcradleと呼ばれるモジュールがあり、非常に簡単に操作できます。私はそれがどれほど高速であるかをテストすることができませんでしたが、それは本当に柔軟性があります(あなたが望むならブラウザでもあなたのデータにアクセスすることができます)。

ここでの主要な問題は、どのデータベース設計がアプリケーションにとって意味があるかです。本質的に主に価値があるデータはありますか?その場合は、Redisを使用してください。すべてのドキュメントが必ずしも同じフィールドを持っているわけではないデータがありますか?その場合は、CouchDBなどのNoSQLデータベースを使用してください。

ブロッキングデータベースを使用する次の悪いことは、データに間違ったデータベースを使用することです。CouchDBはApacheによって管理されているため、品質が良いことはわかっていますが、SQLテーブルや単純なKey-Valueストアでデータが意味をなす場合は、それを使用しても意味がありません。

ユースケースを考えてみてください。全文検索を実行する、キーでデータを取得する、または類似した属性を持つドキュメントの範囲を取得する可能性が高くなりますか?


8

node.jsの高レベルの永続性 /データベースシステムである永続性をチェックしたい場合があります。

thechangelog.comから:

永続性は、プロセス実行間でデータを永続化するための高レベルAPIを可能にするプロジェクトです。目標は、使いやすく、強力で、柔軟な、または可能であれば上記のすべてのバックエンドをサポートすることです。

サポートされるデータベースは次のとおりです。

  • PostgreSQL-エンタープライズレベルのリレーショナルデータベース。ドライバーは純粋なJavaScriptで実装され、PostgreSQLワイヤプロトコルを使用してTCP経由で通信します。
  • Sqlite3-シンプルで高速なサーバーレスのリレーショナルデータベース。このドライバーは、コマンドラインのsqlite3プログラムのラッパーです。パスにsqlite3が含まれている必要があります。通信は非常に高速ですが、型はあまり正確ではありません。文字列とnullのみが返されます。
  • MongoDB-スケーラブルで高性能なオープンソースのスキーマフリーのドキュメント指向データベース。このドライバーはJavaScriptでワイヤープロトコルも実装し、TCPを介してサーバーと通信します。
  • JSON-DB-JSONオブジェクトを含むシンプルなフラットファイルを使用する、独自のシステムスキーマフリーのドキュメント指向データベース。これは、ノードとファイルシステムを除いて、まったく要件がありません。完全に実装されたら、パフォーマンスを決定する必要があります。

13
永続性は2010年3月以降更新されておらず、リリース0.0.4であるため、破棄された可能性があります。
不足


3

データベースのWebスタックへのマッピングだけに焦点を当てることが正しい解決策であるかどうかはわかりませんが、アプリケーション固有の要件も考慮する必要があります。

Twitterフィードやその他の大量のデータのパターンを分析していますが、トランザクションのサポートは必要ありませんか?次に、本当に速いものを選びます。

いくつかの本当に基本的な情報をいくつかのテーブルに保存したいだけですか?次に、学ぶために何かクールなものを選びます。

おそらく、クライアントにとって非常に重要であり、堅牢で、トランザクションである必要があり、リモートホスティング機能へのライブレプリケーションなどが必要なデータを保存する場合があります。次に、postgresqlのようなものを調べます。ミラーリングもできませんが、node.jsドライバーは非常にうまく機能し、SQLを非常に恐れていなければ、必要なものを簡単に入出力できます。

私の意見としては、node.js(php / javaの従来のフレームワークに対して)のような新しいスタックを使用すると、「新しい」複雑さが十分に追加され、一度に余分なレイヤーを追加するべきではないと思います。これはそれを論議するよい記事です:

http://nodeguide.com/convincing_the_boss.html


2

私の経験からお話しします。CouchDBには明確な学習曲線が付属していますが、MongoDBは学習と設定が非常に簡単であることがわかりました。私はredisを使用したことがありません。私はMongoDBをお勧めしますが、それはおそらく恥知らずなファンボイズムです-私には番号がありません。


1

dirtyは、さらに別のフラットファイルのKey-Valueストアです。その名前が示すように、これは簡単で素早い、汚いが高性能のソリューションです。私は作者ではありません:)



0

私が見つかりましたCouchDBのはマスターに非常に簡単。Node.jsで CouchDBを使用する方法を教えてくれるインターネット上の電子書籍はたくさんあります。

この本は CouchDBの学習に非常に役立つことがわかりました。

Node.jsでCouchDBを使用するには、NANOモジュールを使用します。

CouchDBは、IriscouchまたはCloudantでホストできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.