在日常开发中,我一般用mysql数据储存数据,memcache储存缓存,但是我不知道如mongodb这一类的nosql数据库到底相比mysql这种数据库有什么优势,在什么场景下我改选择mongodb这种数据库?希望各位能用浅显的语言帮忙解释下。
怪我咯2017-05-02 09:21:43
例を挙げてください:
mysql: テーブルには 5 つのフィールドがあります。プログラムは作成されています。ここに 2 つのフィールドを追加する必要があります。そのため、まずデータベースにアクセスしてテーブル構造を変更し、フィールドを追加してからプログラムに戻り、 SQLコードを修正します。
mongodb: オブジェクトには 5 つの属性があります。次に、ここに 2 つの属性 (フィールド) を追加する必要があります。これらはプログラムに直接追加できます。
リレーショナル データベースでは、レコードは行、フィールドは列であり、データは行と列の交差点にあります。複数の行と列は、同じ 2 次元構造に従う必要があります。
非リレーショナル データベース。属性はオブジェクトのみに属します。オブジェクトは互いに独立しています。
大家讲道理2017-05-02 09:21:43
長期的なビジネスには mysql+memcache の組み合わせを使用し、統計ログ ビジネスや PM が考慮する必要がある一時的なトランザクションには mongodb+redis の組み合わせを使用します。
mongodb の利点は柔軟性ですが、欠点も柔軟性であり、安定性は mysql ほど良くありません
漂亮男人2017-05-02 09:21:43
従来のリレーショナル データベースと比較すると、MongoDB は非リレーショナル データベースの代表的なものの 1 つです。 MongoDB をいつ使用するかを判断するには、まず MongoDB にどのような機能があり、何ができるのか、何ができないのかを理解し、次に特定の状況に基づいて MongoDB を使用するかどうかを決定する必要があります。最初に公式ドキュメントの導入部分を読むことをお勧めします。この部分には、MongoDB の最も重要な機能がリストされており、他のほぼすべての機能はこれらの機能を中心に展開されています。これらの機能は、多くの場合、MongoDB を採用するかどうかを決定する重要な要素となります。
選び方を簡単かつ大まかに紹介した記事はこちらです。
しかし、テクノロジーの発展に伴い、いわゆる「リレーショナル」と「非リレーショナル」の境界がますます曖昧になってきている一方で、Postgre や MySQL などの従来の RDBMS は非リレーショナルをサポートし始めています。 -JSON などのリレーショナル モデル。一方、MongoDB は JOIN のサポートも開始しており、将来的にはトランザクションもサポートする予定です。境界があいまいになった今、どのテクノロジーをいつ使用するべきかを一概に言えないため、比較した結果、「あれもこれも使える」という結果になることがよくあります。しかし、プロジェクトで特定のテクノロジを使用した場合に得られるものと失うものを比較し、得られる利益が損失を補えるかどうかを比較検討し、最終的にこのテクノロジを採用するかどうかを決定することはできます。
ringa_lee2017-05-02 09:21:43
データの構造が不明な場合は、mongodb を使用するのが最適です。たとえば、SQL データベースでは、最初にすべてのフィールドの型、名前、長さなどを定義する必要があります。これでは、Mongodb は柔軟性に欠ける可能性があります。特定の分野のデータを持っていないだけです。
たとえば、サーバーがシステム イベントをデータベースに保存したいとします。特定のユーザーが何かをしたとき、クエリのために送信した投稿の元の本文の内容を記録する必要がある場合と、SQL で文字列を定義する場合に投稿の内容を記録する必要がない場合があります。長さが 1000 の場合、このスペースは無駄になりますが、mongodb では無駄になりません。そして、このレコードをフェッチすると、フィールドの 1 つが空であっても、SQL データベースは定義した構造を返します。また、mongodb は保存時に空のフィールドを含めず、フェッチするときにも同じことは起こりません。
また、mongodb はさまざまな json 構造を非常によくサポートしていますが、これが mongodb を使用する主な目的ではありません。