2010-12-13 13 views
24

私はPostgreSQLと完全に連携したアプリケーションを持っています。 Mongodbについて読んだ後、私はこのアプリがどのように動作するのか興味を持った。数週間後、私はシステム全体をMongodbに移行しました。MongodbとPostgreSQLの考え

私はモンゴブといくつか好きです。しかし、私はPostgreSQLでやっていたクエリを見つけました。私は効率的にMongodbを実行できませんでした。特に、いくつかのテーブルを結合していくつかのロジックを計算しなければならなかったとき。たとえば、thisです。

また、私はRuby on Rails 3とMongoidと呼ばれるODMを使用しています。モンゴイドはまだベータリリース中です。ドキュメンテーションはいいですが、ODMが従来の(SQL)データベースシステムで提供されていたActive Recordに比べて非常に制限されていることがありました。

この日まで、PostgreSQLではMongodbよりも快適に作業できます。私はテーブルに加わり、データで何かをすることができるからです。

私は2種類のバックアップを作成しました。 1つはPostgreSQLともう1つはMongodbです。一部のアプリは、1つまたは他のタイプのdbに適しているアプリもあります。私はMongodbを続行し、最終的にRoR ODM(Mongoid)が完全に成熟することを希望するか、PostgreSQLを使用することを検討する必要がありますか?

さらに質問: 1)Facebookに似たソーシャルネットワーキングサイトの開発に適しているのはどちらですか? 2)ウェブサイト(ホーム、製品、会社概要、お問い合わせ先)の4ページの標準レイアウトタイプに適しているもの

+0

今日、2015年代の[PostgreSQL 9.4安定版とそのJSONサポート](http://www.postgresql.org/docs/9.4/static/datatype-json.html)、** MongDBは魅力的ではありません**:[ベンチマーク](https://github.com/EnterpriseDB/pg_nosql_benchmark)および[**確認**](http://developer.olery.com/blog/goodbye-mongodb-hello-postgresql/)を参照してください。 。詳細については、[@Jameel Grand answer](http://stackoverflow.com/a/28756884/287948)を参照してください。 –

答えて

49

若いベータ版の機能用に数十万テスト済みのRDBMSコミュニティのサポートがほとんどない薄い書店。あなたがすでにサーバで月に何万ドルも稼働していて、MongoDBがあなたのデータの性質に適していると思っていない限り、あなたはおそらく負の利益のために多くの時間を無駄にしていました。 MongoDBはおもしろいし、そんな理由から自分でいくつかのアプリを作ってきましたが、Postgres/MySQL/SQL Server/etcよりも決して良い選択ではありません。プロダクションアプリケーション用。

"I like a few things with Mongodb. However, I found certain queries I was 
doing in PostgreSql, I couldn't do efficiently in Mongodb. Especially, 
when I had to join several tables to calculate some logic." 

"I found the ODM to be very limiting compared to what Active Record offered 
with traditional (SQL) database systems." 

"I feel more comfortable working with PostgreSql than Mongodb. Only because 
I can join tables and do anything with the data." 

あなたは、PostgreSQLに固執すべきであるように、それは私に見えます言ってきたものに基づいて:

+0

RDBMSが何十年にもわたってそこに存在し、すべてのメリットがあることに私は同意します。私を考えさせることの1つは、 RDBMSが入手したものと同じくらい良いのであれば、なぜそれがオンラインのよく使われているウェブサイト(http://www.mongodb.org/display/DOCS/Production+Deployments)のように見えるのですか?元のSQLデータベースの実装?私はMongoDbがどこから来ているのかは「ベータ品質」だとは思わない。それ以外の場合、プロダクション展開の長いリストはなぜですか? –

+10

ベータ版で、展開の一覧が誤解を招きます。上場企業のほとんどはMongoDBを片方のプロジェクトに使用しており、主なサービスは実行していません。各企業名の横にあるコメントを読んでください。一つはWebフォームを追跡するために使用し、もう一つは内部報告アプリケーションなどに使用します。実際にMongoDBを主要サービスに使用している数のうちの1つはFoursquareであり、彼らがRDBMSを使用していた場合には起こらなかったダウンタイムの日にそれらを噛む。 –

+1

ダンを元通りにしてくれてありがとう。より多くの展開のリストを読んでください。確かに、誤解を招いていました。それらのほとんどはMongoDBを部分的に統合し、完全には統合していません。 2つのタイプのDBを持っているだけでは、仕事にもっと力を入れることはできませんか?第二に、私のアプリはMongoDB上で動作する大きな問題なしで動作しているようです。まだ開発段階です。プロダクションでテストを実行していない。 MongoDBの今後の大きな問題を遭遇する前に、RDBMSへのスイッチバックを考えるべきでしょうか? –

13

はあなたが書いたものを引用し、それを教えてくれるか見てみましょう。 MongoDBを見守り、適切な場合にはそれを使用してください。しかし、PGのように聞こえてきたことを考えれば、現時点ではPGがあなたにはうってつけです。

共有して楽しんでください。

2

私はまだのMongoDBを使用していない、と私はPostgresので行うことができない何かを発見していないが、ちょうどのPostgreSQL 9.2のリリースノートを引用すると、それにラウンドを取得することはありません可能性があります

PostgreSQL 9.2では、クエリ結果をJSONデータ型として返すことができます。 新しいPL/V8 JavascriptおよびPL/Coffeeデータベース プログラミング拡張とオプションのHStoreキー値ストアと組み合わせると、ユーザ はPostgreSQLを "NoSQL"ドキュメントデータベースのように利用できるようになり、 はPostgreSQLの信頼性、 。

Postgresの新しいバージョンのように見えますが、両方の世界のベストを持つことができます。私はまだこれを使用していませんが、PostgreSQLのファン(優秀なドキュメント/メーリングリスト)として、RDBMSに関係するほとんどのものを使用することを躊躇しません。

1

私たちも同じことについてより良い研究をしています。 PostGresまたはMongoDb。すべての事実と数字を手に入れて、PostGresはMongoDbよりはるかに使い易いことがわかった。 MongoDbでは、メモリとCPUを奪うだけでなく、大量のディスクスペースを占有します。一定の間隔でディスクの2倍のサイズが増えています。

2

まず最初に、postgresはRDBMSであり、MongoDBはNoSQLです。
スタンドアロンのNoSQLテクノロジーは、非構造化アプリケーションの高スループット・パフォーマンスのために重要なデータ保護を犠牲にするため、ACID標準を満たしていません。

Postgres 9.4は完全なトランザクションサポートとともにNoSQL機能を提供し、フィールドデータに制約のあるJSONドキュメントを保存します。

ので、あなたはRDBMSとNoSQLの

の両方からすべての利点を取得するには、あなた自身のためのPostgres'のNoSQLのパフォーマンスを体験するには、詳細な記事のためにhttp://www.aptuz.com/blog/is-postgres-nosql-database-better-than-mongodb/

をそれをチェックアウト。 GitHubでpg_nosql_benchmarkをダウンロードしてください。ここにリンクがありますhttps://github.com/EnterpriseDB/pg_nosql_benchmark

0

私のプロジェクトの両方のデータベースで作業した後、PostgresとMongoでの私の経験。

のPostgres(RDBMS)

あなたの将来のアプリケーションが参加するか、すべてのデータが関係を持っているか、我々は重い書き込みを持っている場合の多くを必要とする複雑なスキーマを持っている場合はPostgresが推奨されます。 Postgresはオープンソースで高速でACIDに準拠しており、ディスク上のメモリ使用量も少なく、JSONストレージの性能も優れています。また、3レベルのトランザクション分離を備えたトランザクションの完全なシリアル化機能も備えています。

Postgresにとどまる最大の利点は、我々が両方の世界の中で最も優れていることです。制約、一貫性、および速度でJSONBにデータを格納できます。一方、他のタイプのデータにはすべてのSQL機能を使用できます。基礎となるエンジンは非常に安定しており、優れたデータ量の範囲に対応しています。また、あなたのハードウェアとオペレーティングシステムの選択でも実行されます。 PostgresはNoSQL機能と完全なトランザクション・サポートを提供し、フィールド・データに制約のあるJSON文書を保管します。

スケーリングPostgresの水平方向のPostgresため

一般制約が大幅に難しいが、なんとかです。

Postgresでは高速読み取り操作を完全に達成することはできません。

NO SQLデータベース

MongoのDB(有線タイガー)

のMongoDBが「水平スケール」の次元ではPostgresを打つことができます。 JSONを格納することは、Mongoが行うために最適化されたものです。 MongoはJSONのスーパーセットのバイナリ表現であるBSONbというバイナリ形式でデータを格納します。 MongoDBはオブジェクトを設計したとおりに保存します。MongoDBによると、書き込み集中型アプリケーションでは、新しいエンジン(Wired Tiger)を使用すると、書き込みパフォーマンスが最大10倍向上します(これを試してください)。ストレージ使用率が80%削減され、ストレージのコストが削減されますハードウェアの利用効率を高めることができます。スキーマレスストレージエンジンの使用が暗黙のスキーマの問題につながるのMongoDB

一般制約。これらのスキーマは、ストレージエンジンによって定義されるのではなく、アプリケーションの動作と期待に基づいて定義されています。

スタンドアロンのNoSQLテクノロジーは、非構造化アプリケーションの高スループット・パフォーマンスを優先して重要なデータ保護を犠牲にするため、ACID標準を満たしていません。 NoSQLデータベースにACIDを適用するのは難しいことではありませんが、データベースをある程度までゆっくりと柔軟にすることになります。 "NoSQLの制限のほとんどは、以前の制限を大幅に克服した新しいバージョンとリリースで最適化されました。

  1. Facebookに似たソーシャルネットワーキングサイトの開発に適しているのはどちらですか? Facebookは現在、HiveとCassandraのようなデータベースの組み合わせを使用しています。
  2. ウェブサイト(ホーム、製品、情報、連絡先)の4ページの標準レイアウトタイプにはどちらが適していますか 再度、データの保存と処理方法によって異なります。任意のSQLまたはNOSQLデータベースがそのジョブを実行します。