sql >> データベース >  >> NoSQL >> MongoDB

RedisとMongoDB

    1。概要

    多くの場合、アプリケーションのプライマリデータストアとして非リレーショナルデータベースを決定するのは難しいと感じています。

    この記事では、2つの人気のある非リレーショナルデータベース、RedisとMongoDBについて説明します。

    まず、RedisとMongoDBが提供する機能について簡単に説明します。次に、RedisまたはMongoDBを相互に比較して、いつ使用するかについて説明します。

    2。 Redis

    Redisは、豊富な機能セットを提供するメモリ内データ構造ストアです。 キャッシュ、メッセージブローカー、キューとして便利です

    2.1。機能

    • 専用のコマンドラインインターフェイス– redis-cli
    • キーと値のペアを格納し、リスト、セット、ハッシュなどのデータ構造をサポートします
    • 最大512MBのサイズの値を保存できます
    • pub/subメッセージキューを使用してメッセージをパブリッシュおよびサブスクライブできます
    • リアルタイムの地理空間データを管理するための特別なコマンドを提供することによる地理空間のサポート
    • LUAスクリプトの実行を許可します
    • 人気のあるテクノロジーのさまざまなクライアントを提供します
    • IoTと組み込みデバイスをサポートします
    • 春のデータサポート
    • RedissonなどのJavaクライアントを使用したSpringCacheのサポート

    2.2。インストール

    公式ウェブサイトから最新のRedisサーバーをダウンロードしてインストールできます:

    $ wget http://download.redis.io/releases/redis-6.0.9.tar.gz
    $ tar xzf redis-6.0.9.tar.gz
    $ cd redis-6.0.9
    $ make
    

    3。 MongoDB

    MongoDBは、JSONのようなドキュメント構造で情報を格納するNoSQLドキュメントデータベースです。これは、設計および実装段階で急速に変化するアプリケーション、プロトタイピング、およびスタートアップのためのスキーマレスデータストアとして役立ちます

    3.1。機能

    • インタラクティブなコマンドラインインターフェースMongoDBシェル( mongosh )管理操作を実行し、データをクエリ/更新する
    • 結合をサポートするJSONベースのクエリ構造
    • 地理ベースの検索、グラフ検索、テキスト検索など、さまざまな種類の検索をサポートします
    • マルチドキュメントACIDトランザクションをサポートします
    • 春のデータサポート
    • コミュニティ、エンタープライズ、およびクラウド(MongoDB Atlas)エディションで利用可能
    • C ++、Java、Go、Python、Rust、Scalaなどの主要テクノロジーのさまざまなドライバー
    • MongoDBCompassを介してデータを探索および操作するためのGUIを提供します
    • MongoDBチャートを使用してデータの視覚的表現を提供します
    • MongoDB BI Connectorは、BIおよび分析プラットフォームへの接続を提供します

    3.2。インストール

    最新のMongoDBサーバーをダウンロードするか、macOSを使用している場合は、Homebrewを使用してコミュニティエディションを直接インストールできます。

    brew tap mongodb/brew
    brew install [email protected]

    4。いつRedisを使用しますか?

    4.1。キャッシング

    Redisは、頻繁にリクエストされるアイテムに1ミリ秒未満の応答時間を提供することで、クラス最高のキャッシュパフォーマンスを提供します

    さらに、 EXPIRE などのコマンドを使用して、キーの有効期限を設定できます。 、 EXPIREAT 、および PEXPIRE

    同時に、 PERSISTを使用できます タイムアウトを削除してキーと値のペアを永続化するコマンド。これにより、キャッシュに最適になります。

    4.2。柔軟なデータストレージ

    Redisは、文字列、リスト、セット、ハッシュなどのさまざまなデータ構造を提供して、データの保存方法と整理方法を決定します。したがって、Redisを使用すると、データベース構造の実装を完全に自由に行うことができます。

    ただし、DBの設計を検討するのにも長い時間がかかる場合があります。同様に、Redisを使用してスキーマの内部構造を構築および維持することは困難な場合があります。

    4.3。複雑なデータストレージ

    同様に、リスト、セット、ハッシュを組み合わせることで、キュー、配列、並べ替えられたセット、グラフなどの複雑なデータ構造を実装できます 私たちのストレージのために。

    4.4。チャット、キュー、メッセージブローカー

    Redisは、パターンマッチングを備えたpub/subメッセージキューを使用してメッセージをパブリッシュおよびサブスクライブできます 。したがって、Redisはリアルタイムチャットとソーシャルメディアフィードアプリケーションをサポートできます。

    同様に、リストデータ構造を使用した軽量キューを実装できます。 。さらに、Redisのリストは不可分操作をサポートし、ブロッキング機能を提供するため、メッセージブローカーの実装に適しています。

    4.5。セッションストア

    Redisは、永続性機能を備えたメモリ内データストアを提供するため、Web/モバイルアプリケーションのセッションを保存および管理するのに適しています。

    4.6。 IoTと組み込みシステム

    Redisの公式ドキュメントによると、4および5以降の新しいバージョンはARMプロセッサとRaspberryPiをサポートしています

    また、Andriodで動作し、公式にサポートされているプラ​​ットフォームとしてAndroidを含めるための取り組みが行われています。

    したがって、RedisはIoTおよび組み込みシステムに理想的であり、の恩恵を受けています。 メモリフットプリントが小さく、CPU要件が低い。

    4.7。リアルタイム処理

    非常に高速なメモリ内データ構造であるため、リアルタイム処理アプリケーションに使用できます。

    たとえば、Redisは、株価アラート、リーダーボード、リアルタイム分析などの機能を提供するアプリケーションを効率的に提供できます。

    4.8。地理空間アプリ

    Redisは、地理空間インデックスを管理するために、ソートされたセットに基づいて構築された専用のメモリ内データ構造GeoSetを提供します。また、 GEOADDのような特定のgeoコマンドを提供します 、 GEOPOS 、および GEORADIUS 地理空間データを追加、読み取り、分析します。

    したがって、Redisを使用してドライブ時間やドライブ距離などのロケーションベースの機能を備えたリアルタイムの地理空間アプリケーションを構築できます

    5。いつMongoDBを使用しますか?

    5.1。動的クエリ

    MongoDBは、強力なクエリツールのセットを提供します。また、地理ベースの検索、グラフ検索、テキスト検索など、さまざまな柔軟なクエリスキームを提供して、効率的なデータ検索を実現します。

    同時に、JSON構造化クエリのサポートにより、MongoDBは、データ検索と分析が日常業務であるシナリオに適しているように見えます。

    5.2。急速に変化するスキーマ

    MongoDBは、スキーマをすばやく変更する必要がある設計段階と初期の実装段階で役立ちます。同時に、基になるデータを想定せず、スキーマを必要とせずに最適化されます。

    5.3。プロトタイピングとハッカソン

    JSONのようなドキュメント構造に従うことで、 MongoDBは、ラピッドプロトタイピング、フロントエンドチャネルとの迅速な統合、およびハッカソンを可能にします

    同時に、RDBMSの複雑さに対処したくないジュニアチームにも役立ちます。

    5.4。カタログ

    MongoDBは、自己記述型の動的スキーマを提供することで、製品、機能、推奨事項を簡単に追加できるようにします eコマース、資産管理、在庫などのカタログ用。

    また、JSON構造化ドキュメントのフィールドまたはフィールドのセットにインデックスを付けることで、高度な検索や分析などの機能にMongoDBで表現力豊かなクエリを使用できます。

    5.5。モバイルアプリ

    MongoDBのJSONドキュメント構造により、地理空間インデックスとともにさまざまなデバイスからのさまざまなタイプのデータを保存できます。

    さらに、ネイティブシャーディングによる水平方向のスケーラビリティにより、モバイルアプリのスケーリングが容易になります。したがって、MongoDBは大量のユーザーにサービスを提供し、ペタバイトのデータを処理し、1秒あたり数十万の操作をサポートできるため、モバイルアプリを支援するための価値のある選択肢になります。

    5.6。コンテンツが豊富なアプリ

    最新のコンテンツが豊富なアプリのRDBMSにさまざまなコンテンツを組み込むことは簡単ではありません。一方、 MongoDBでは、テキスト、オーディオ、ビデオなどのリッチコンテンツを保存して提供できます

    また、 MongoDB GridFSを使用すると、16MBを超えるファイルを効率的に簡単に保存できます 。ファイル全体をメモリにロードせずに、大きなファイルの一部にアクセスできます。

    さらに、すべてのサーバー間でファイルとメタデータを自動的に同期します。その結果、MongoDBは、コンテンツが豊富なアプリをサポートするためのより適切な選択肢のように見えます。

    5.7。ゲームアプリ

    モバイルアプリやコンテンツが豊富なアプリと同様に、ゲームにも大規模なスケーリングと動的なデータ構造が必要です。したがって、MongoDBはゲームアプリにとって有望な選択肢になる可能性があります。

    5.8。グローバルクラウドデータベースサービス

    MongoDB Atlasは、AWS、Google Cloud、Azureなどの複数のクラウドサービスで利用できます 。さらに、レプリケーションとフェイルオーバーのメカニズムが組み込まれているため、可用性の高い分散システムを提供します。したがって、データベースを迅速に展開および管理し、グローバルクラウドデータベースサービスとして使用できます。


    1. ClouderaSearchとHBaseを使用したメールのインデックス作成

    2. meteor:mongoデータベースをバックアップするにはどうすればよいですか?

    3. Googleの標準AppEngine(Python 3.7)からRedisインスタンス(メモリストア)に接続する方法

    4. Celery+Redisを使用すると大幅な遅延が発生します