[解決済み] MongoDBや他のドキュメント指向のデータベースシステムを使うべきタイミングは?[クローズド]
質問
ビデオクリップ、オーディオクリップ、写真、ベクターグラフィックのためのプラットフォームを提供します。データベースのバックエンドとして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のどちらかを選択する際に、自分自身に正しい質問をするのにとても役立ちます。読む価値があると思います。
関連
-
[解決済み】MySQLで「すべての派生テーブルは独自のエイリアスを持つ必要があります」というエラーは何ですか?
-
[解決済み】MongoDBデータベースの名前を変更する方法とは?
-
[解決済み] MongoDB ドキュメントからフィールドを完全に削除する方法は?
-
[解決済み] ブーリアン値を格納するために使用するMySQLデータ型
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み] MySQL で特定のカラム名を持つすべてのテーブルを見つけるにはどうすればよいですか?
-
[解決済み] コマンドラインからMongoDBデータベースを削除する方法を教えてください。
-
[解決済み] MongoDBとその逆の上にCouchDBを使用するとき
-
[解決済み] MongoDB データベースのすべてを削除する
-
[解決済み] MongoDB コレクションのすべてのドキュメントに新しいフィールドを追加する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySQLにおけるorder byの使用方法の詳細
-
MySQLのLike演算子に関する詳細
-
MySQL演算子(and, or, in, not)の具体的な使用方法
-
SQL基本クエリステートメント
-
mysqlのデータ圧縮性能比較 詳細
-
Mysqlデータベースの手動および定期的なバックアップ手順
-
MySQLの悲観的ロックと楽観的ロックの実装スキーム
-
[解決済み] SQLエラー。ORA-01861:リテラルは、フォーマット文字列01861に一致しません。
-
[解決済み] SQLでカラムに最大値を持つ行のみを選択する [重複]。
-
[解決済み] utf8_general_ciとutf8_unicode_ciの違いは何ですか?