2

私がMysqlで今持っているもの

これが私のデータベースです:

ここに画像の説明を入力してください

バウンディングボックスを使用して、場所でユーザーを頻繁に検索します。

さらに2つのテーブルがあります:user_tagとtags。データベース全体のサイズは約1Gbです。

これらのテーブルを使用して任意のタグシステムを実装したので、ユーザーがまだ作成されていないタグを使用したい場合は、このタグがタグテーブルに挿入されます。

また、タグでユーザーを検索します。

ベンチマーク

このデータベースには、主キーのインデックスを除いてインデックスがありません。

ご覧のとおり、インサートがたくさんあり、時間がかかります。

ここでの主な問題は、時間のかかる挿入と更新です。

タグ付きの新しいイベントを作成します(〜150ms):

http://pastebin.com/vyw6qhrN

イベントの更新(〜200ms):

http://pastebin.com/f28yvn9z

このソリューションで私が気に入らない点:

  1. 新しいユーザーを作成するときは、3つのテーブルに挿入して、ユーザーをタグにリンクします。
  2. ユーザー情報を更新するときは、ユーザーがタグを変更するときに、3回の更新と1回の削除または挿入も行う必要があります。
  3. タグによるユーザーの検索は非常に面倒になります(複雑なクエリ)(タグシステムの実装方法

NoSqlで何を取得できますか

ドキュメント指向のデータベースを使いたい。次に、必要なコレクションは1つだけです。

{
"name": "Dan",
"lat": 60
"lon": 30
"tags":["football", "fishing"]  
}

タグlatlonにインデックスを設定して、検索を高速化できるようになります。

私の質問

  1. NoSqlに切り替える必要がありますか、それとも現在の実装を改善することができます。または、別のRDBMSに切り替えますか?
  2. 切り替える必要がある場合:この場合、どのNoSqlデータベースが最適ですか?
  3. MongoDbに切り替える必要がある場合:信頼性が高く、十分に成熟していますか?MongoDbから離れる人々についての投稿をたくさん読んだからです。例:http ://www.reddit.com/search?q = mongodb
4

1 に答える 1

2

どちらのテクノロジーもおそらく問題を解決できます。RDBMSを使用すると処理しやすいシナリオもあれば、より専門的なデータベースを使用するシナリオもあります。それはあなたの要件の詳細、あなたの経験とあなたの個人的な好みに依存します。

@mvpは「SQLの便利さ」についてコメントしました。個人的には、オブジェクト指向とSQLのマッピングは簡単ではないため、SQLは大きな問題だと思います。人々はしばしば彼らのORMの巨大なものを使用しますが、これはアンチパターンだと思います。ORMコードのサイズがアプリケーションコード全体の50倍を超えている可能性があるため、何かが怪しいです。しかし、それは私の意見です。SQLはおそらく最も一般的なデータストアです。

個人的には、問題がMongoDBにうまくマッピングされていると感じています。

  • 地理インデックスがあり、さまざまな地理クエリをサポートしています
  • 必要な場合は、簡単なタグ付けを作成するのは非常に簡単です。
  • それは簡単で、数GBのデータの処理も簡単です。
  • 管理は簡単です。innodb_buffer_pool_size私はその規模でいじくり回す必要はありません。
  • 結合は過大評価されています。一緒に属するデータを分割してテーブルに圧縮するため、結合が必要です。「サッカーが好きで、fooに住んでいるユーザーも好きですか?」などの質問に対する答えを見つけたい場合は、集約フレームワークとキャッシングは、巨大な結合よりも簡単でスケーラブルです。

私があなたなら、1日か2日座って、試してみます。実際のデータでテストを実行できるように、適度なサイズのデータ​​セットがあり、いくつかのクエリを変更するのは非常に簡単です。それは楽しく、あなたは直接の良い面と悪い面を感じるでしょう。

ちなみに、redditに関する3つの記事は相互に言及しています:pastebinの「MongoDBを使用しないでください」、news.ycombinator.comでのEliot Horowitzの回答、「MongoDBの話はデマでした」なので、MongoDBはそうではありませんランダムにクラッシュして、膨大な数のバグがあるだけではありません。しかしもちろん、スケーリングの問題を魔法のように解消するのは特効薬ではありません。

于 2013-02-08T11:18:24.060 に答える