個人財務 NoSQLによる高速キー・アクセス

NoSQLによる高速キー・アクセス

目次:

ビデオ: NoSQL Strategy on AWS(日本語:AWS Summit Tokyo 2014 | TE-03) 2024

ビデオ: NoSQL Strategy on AWS(日本語:AWS Summit Tokyo 2014 | TE-03) 2024
Anonim

NoSQLのキー値ストアはすべてスピードに関するものです。さまざまな手法を使用して、データのキャッシュ、複数のデータのコピー、または最適なストレージ構造の使用など、その速度を最大限に高めることができます。

メモリ内のデータのキャッシュ

RAMに格納されているデータに簡単にアクセスできるため、RAMにデータをキャッシュするキーバリューストアを選択すると、データアクセスに要する時間が大幅に短縮されますより高いサーバーコスト

<! - 1 - >

しかし、しばしば、このトレードオフは価値のあるものです。格納されたデータの何パーセントが頻繁に要求されているかを簡単に計算できます。 5%が一般的に数分ごとに要求されることが分かっている場合は、データサイズの5%を取り出し、その数をデータベースサーバー全体のスペアRAMスペースとして追加します。

オペレーティングシステム、他のアプリケーション、およびデータベースサーバにもメモリ要件があることに注意してください。

- >

スレーブへのデータの複製

キー値ストアでは、特定のキーがクラスタ内のいずれかのサーバーに格納されます。このプロセスは キーパーティショニング と呼ばれます。つまり、このキーが絶えず要求されている場合、このノードは大量の要求を受け取ります。したがって、このノードは平均要求速度よりも遅く、潜在的にユーザーのサービス品質に影響します。

<! - 3 - >

この状況を回避するために、一部のKey-Valueストアでは、読み取り専用レプリカ(スレーブとも呼ばれます)の追加がサポートされています。 Redis、Riak、Aerospikeは良い例です。レプリケーションでは、キーを複数のサーバーに複数回格納できるため、応答速度は向上しますが、ハードウェアは増えますが、

キーストアの中には、キーのレプリカがマスターと常に同じ値を持つことを保証するものがあります。この保証は完全に一貫していると呼ばれます。キーを保持しているマスターサーバーで更新が行われると、すべてのレプリカが最新の状態になることが保証されます。

すべてのKey-Valueストアがこのステータス(Riakなど)を保証するわけではないので、ミリ秒まで更新することが重要な場合は、レプリカが完全に一貫性のあるデータベース(Aerospikeなど)を選択します。

キー・バリュー・ストアでのデータ・モデリング多くのキー・バリュー・ストアは、バリュー・タイプの基本構造のみをサポートしているため、アプリケーション・プログラマーはデータを解釈する必要があります。単純なデータ型のサポートには、通常、文字列、整数、JSON、およびバイナリ値が含まれます。

多くのユースケースではこれがうまくいきますが、データへのより細かいアクセスが有用な場合もあります。

文字列

  • リスト

  • セット

  • ソートセット

  • ハッシュマップ

  • ビット配列

  • ハイパーログログ

  • ソートセットは、次のデータ型をサポートしています。日付でソートされた値のインデックスを照会するのと同じように、値の一致範囲を照会することができます。これは、型指定されたデータのサブセットを検索する場合に非常に便利です。

データ操作

Redisには、RMU(read-modify-update)ステップを実行することなく、キー値を直接インクリメントおよびデクリメントする操作が含まれています。単一のトランザクション内でこれを行うことで、他のアプリケーションが更新中に値を変更しないようにすることができます。これらのデータ型固有の操作には、リストやセットへの項目の追加や削除も含まれます。

Redis ZRANGEBYLEXコマンドを使用すると、アプリケーションのユーザーインターフェイスにオートコンプリート機能を提供することもできます。このコマンドは、文字列に部分的に一致するキーのセットを取得します。したがって、Redisで構築されたアプリケーションの検索バーに「NoSQL for」と入力すると、「NoSQL For Dummies」という提案が表示されます。 "

Redisの評価

Redisは非常に軽量ですが、驚異的な高速キーストアです。当初はメモリ内のキー値ストアとして設計されていましたが、現在はディスクベースのデータストレージを備えています。

Redisを使用すると、AOF(添付ファイルのみ)モードを有効にし、各クエリでデータを強制的にディスクに強制するようにRedisに指示することができます(強制

fsync flushing )。もちろん、AOFは書き込みを遅くしますが、データの耐久性を高めます。ただし、1秒までのコマンドを失う可能性はあることに注意してください。 また、Redis氏は最近、クラスタリングのサポートを追加しました。実際、この執筆時点では、Redisのクラスタリングのサポートはベータテスト段階にあります。幸い、Redisは、クライアントが直接書き込むことのない特定のキーとスレーブのマスターを持つ、シェアードナッシング・クラスタ・モデルを使用します。マスターだけがそうします。シェアード・ナッシング・クラスタリングを提供すると、すべてのレプリカへの書き込みを可能にするデータベースの場合よりも、Redisが信頼性の高いクラスタリングを容易に実装できるようになります。

非常に高速なメモリ内キャッシュ層を別のデータベースの前に配置する場合は、MongoDBまたはRiakをRedisで一般的に使用し、Redisをオプションとして評価します。おそらくRedisは、クラスタ化とデータ耐久性のサポートが進化するにつれ、他のバックエンドデータベースを追い越すことができます。

NoSQLによる高速キー・アクセス

エディタの選択

自転車の点検チェックリスト - ダミー

自転車の点検チェックリスト - ダミー

すぐに自転車の点検をするために数分。あなたの自転車を一時的に与えることは、あなたの次の乗り心地の安全性、快適性、そして楽しさを高めることができます。乗車準備の一環として、次の手順に従ってください:車輪のクイックリリースレバーを開閉して、確認します。

必須サイクリング用具 - ダミー

必須サイクリング用具 - ダミー

あなたはバイクの乗り心地をさらに楽しくするために何百万ものものを買うことができます。自転車用に必要なアクセサリーをいくつかご紹介します。ヘルメット:ヘルメットを着用することはオーストラリアとニュージーランドの法律です。

自転車の範囲を閲覧可能 - ダミー

自転車の範囲を閲覧可能 - ダミー

あなたはサイクリングをすることに決めましたが、その重要なキットを欠いている - バイク!あなたが望む自転車のタイプを正確に知っていない限り、良いアドバイスは、あなたの時間を費やして、自転車で何をするのか、どこに乗るのかを本当に考えてみることです。

エディタの選択

アプリとプライバシー - ダミーを特定する

アプリとプライバシー - ダミーを特定する

Spotifyアプリケーションに登録すると、あなたの個人的な詳細の一部にアクセスする。たとえば、Top10アプリを使用してプレイリストを公開するには、既存のFacebookアカウントにリンクする必要があります。このプロセス中、Facebookはあなたに特定の種類の共有を許可するかどうか尋ねます。

モバイル対応携帯電話を識別する - ダミー

モバイル対応携帯電話を識別する - ダミー

SpotifyモバイルはiPhoneで最も人気がありますが、優れたAndroidバージョン(basks Androidマーケットの5つ星評価のうち5つの評価では5位に入っています)が急速に追いついています。

特集 - ダミー

特集 - ダミー

スポットメイキングは、モバイルでも、あらゆる音楽への普遍的な即時アクセスを可能にしますデバイスまたはデスクトップコンピュータ。 Facebookは人々が古い友達と再会して新しい友達を作るのを助け、Spotifyの助けを借りて青春の歌を再発見し、友人や検索を通じて新鮮な音楽を発見しました。

エディタの選択

IOSアプリケーションでオブジェクト指向設計を使用する方法 - ダミー

IOSアプリケーションでオブジェクト指向設計を使用する方法 - ダミー

IOSは、動作がオブジェクトに関連付けられているプログラムを設計するさまざまな方法です。説明するために、紅茶とスープの作り方を検討することを検討してください。しかし、即座に代わりに活動に飛び込んではいけません。探偵が犯罪現場に入るように行動してください。

IOSアプリケーションでハイレベル抽象化を使用してビデオを再生する方法 - ダミー

IOSアプリケーションでハイレベル抽象化を使用してビデオを再生する方法 - ダミー

このセクションでは、MPMoviePlayerViewControllerクラスの高レベル抽象化を使用してiOSアプリケーションでビデオを再生する方法を説明します。 - (IBAction)playVideo:(id)sender {MPMoviePlayerViewController * moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:movieURL];このコードは、ビデオビューコントローラ内のTTTVideoViewControllerファイルからです。 [self presentMoviePlayerViewControllerAnimated:moviePlayer];}シンプルさ自体!必要なのはURLです。

IOSアプリケーションでJavaスクリプトオブジェクト表記を使用する方法 - ダミー

IOSアプリケーションでJavaスクリプトオブジェクト表記を使用する方法 - ダミー

JavaScript Object Notation (JSON)はiOSアプリのデータを表現する上で事実上の標準になっています。 JSONを使用して、Web上でデータを転送したり、長期保存データを保存および取得するためのフォーマットとして使用することができます。 JSONは、人間が読める形式であり、マシンが理解しやすい形式です。 JSONのデータは1つにまとめることができます...