1. ホーム
  2. mysql

[解決済み] MongoDBや他のドキュメント指向のデータベースシステムを使うべきタイミングは?[クローズド]

2022-03-19 21:08:29

質問

ビデオクリップ、オーディオクリップ、写真、ベクターグラフィックのためのプラットフォームを提供します。データベースのバックエンドとしてMySQLから始め、最近では モンゴルDB というのも、MongoDBはファイルのすべてのメタ情報を保存するのに適しているからです。例えば、写真には Exif また、動画にはオーディオトラックがあり、そのメタ情報も保存したい場合があります。動画とベクターグラフィックは共通のメタ情報を持っていないので、MongoDBはこのような非構造化データを保存し、検索可能に保つのに最適だと思います。

しかし、私たちはプラットフォームの開発を続け、機能を追加しています。次のステップとしては、ユーザー向けのフォーラムを提供する予定です。フォーラムやフォーラムの投稿などを保存するのに適しているMySQLデータベースを使うか、それともMongoDBを使うか?

つまり、MongoDBを使うべきときと、RDBMSを使うべきときがあるということです。もし選択肢があるなら、MongoDBとMySQLのどちらを取るか、またその理由は何ですか?

解決方法は?

NoSQL。こんなに簡単なら は、MongoDBについて書いています。

<ブロッククオート

MongoDBはキー/バリューストアではなく、それ以上のものです。RDBMSでもありません。私はMongoDBを本番で使ったことはありませんが、テストアプリを作るときに少し使ったことがあり、とてもクールなキットです。非常にパフォーマンスが高く、フォールトトレランスとオートシャーディング(つまりスケールすること)を備えている、あるいは近々備える予定です。Mongoは、私がこれまで見てきた中で、RDBMSの代替品に最も近いものだと思います。すべてのデータセットやアクセスパターンに対応できるわけではありませんが、典型的なCRUDのために作られたものです。本質的に巨大なハッシュを保存して、そのキーから選択できるようにするのが、ほとんどの人がリレーショナルデータベースを使う目的です。 もしあなたのDBが3NFで、結合をしないなら(単にテーブルの束を選択してすべてのオブジェクトをまとめるだけ、つまりほとんどの人がウェブアプリで行うこと)、MongoDBはおそらくあなたにとって素晴らしいものになるでしょう。

では、結論から言うと。

本当に指摘したいのは、もしデータベースを選べないために、超すごいものを作るのを阻まれているとしたら、それは間違ったやり方だということです。 mysqlを知っているならば、それを使えばいいだけです。実際に必要なときに最適化すればいいのです。k/vストアのように使ったり、rdbmsのように使ったり、でもお願いだから、キラーアプリを作ろう! ほとんどのアプリには関係ないことです。Facebookは今でもMySQLをたくさん使っている。ウィキペディアはMySQLをよく使っている。FriendFeedは、MySQLを多用している。 NoSQLは素晴らしいツールですが、あなたの競争力を高めるものでも、あなたのアプリをホットなものにするものでもありませんし、何より、あなたのユーザーはこのようなことを気にしないでしょう。

次のアプリは何で作ろうか?おそらくPostgresでしょう。NoSQLを使うか?そうかもしれません。HadoopとHiveも使うかもしれない。全部フラットファイルにしておくかもしれない。マグレブのハッキングを始めるかもしれない。 その仕事に最適なものを使う。 レポートが必要なら、NoSQLは一切使いません。 キャッシュが必要なら、Tokyo Tyrantを使うかもしれませんね。 ACIDityが必要なら、NoSQLは使わない。 大量のカウンターが必要なら、Redisを使う。 トランザクションが必要なら、Postgresを使う。 1種類のドキュメントが大量にある場合は、Mongoを使うことになるでしょうね。 1日に10億個のオブジェクトを書く必要があるなら、Voldemortを使うだろう。全文検索が必要なら、おそらくSolrを使うだろう。揮発性データの全文検索が必要なら、おそらくSphinxを使うだろう。

この記事はとても有益で、NoSQLの状況や誇大広告の概要がよくわかります。しかし、これが最も重要な部分なのですが、RDBMSとNoSQLのどちらかを選択する際に、自分自身に正しい質問をするのにとても役立ちます。読む価値があると思います。

記事への別リンク