私がMysqlで今持っているもの
これが私のデータベースです:
バウンディングボックスを使用して、場所でユーザーを頻繁に検索します。
さらに2つのテーブルがあります:user_tagとtags。データベース全体のサイズは約1Gbです。
これらのテーブルを使用して任意のタグシステムを実装したので、ユーザーがまだ作成されていないタグを使用したい場合は、このタグがタグテーブルに挿入されます。
また、タグでユーザーを検索します。
ベンチマーク
このデータベースには、主キーのインデックスを除いてインデックスがありません。
ご覧のとおり、インサートがたくさんあり、時間がかかります。
ここでの主な問題は、時間のかかる挿入と更新です。
タグ付きの新しいイベントを作成します(〜150ms):
イベントの更新(〜200ms):
このソリューションで私が気に入らない点:
- 新しいユーザーを作成するときは、3つのテーブルに挿入して、ユーザーをタグにリンクします。
- ユーザー情報を更新するときは、ユーザーがタグを変更するときに、3回の更新と1回の削除または挿入も行う必要があります。
- タグによるユーザーの検索は非常に面倒になります(複雑なクエリ)(タグシステムの実装方法)
NoSqlで何を取得できますか
ドキュメント指向のデータベースを使いたい。次に、必要なコレクションは1つだけです。
{
"name": "Dan",
"lat": 60
"lon": 30
"tags":["football", "fishing"]
}
タグとlatとlonにインデックスを設定して、検索を高速化できるようになります。
私の質問
- NoSqlに切り替える必要がありますか、それとも現在の実装を改善することができます。または、別のRDBMSに切り替えますか?
- 切り替える必要がある場合:この場合、どのNoSqlデータベースが最適ですか?
- MongoDbに切り替える必要がある場合:信頼性が高く、十分に成熟していますか?MongoDbから離れる人々についての投稿をたくさん読んだからです。例:http ://www.reddit.com/search?q = mongodb