RDBMSの苦手な処理をカバーする、気の利いたNoSQL「Redis」 - (page 2)

廣瀬一海 (アイレット クラウドパック事業部)

2015-04-14 12:00

HyperLogLogs

図7

 HyperLogLogsは主にデータマイニングや統計解析で用いられる、データの異なり数(カーディナリィ)などを高速に推測するアルゴリズムです。このアルゴリズムによって値の異なり数などの推定が可能になります。

 アルゴリズムの推定度合いを示すAccuracyは99%と高精度である反面、母数が少ない場合は誤差が多くなる傾向があります。あくまでも推定であることには注意が必要です。使い方としては、HTTPアクセスログの送信元IPを格納し、1日にアクセスがあった送信元IPそれぞれの個数を推定できるようになります。

Redisが解決するユースケース

 このように特徴的なデータ型を持つRedisは、ウェブアプリケーションの実装の際にRDBMSが苦手としていた部分をスマートに効率よく便利にします。具体的にどのようなユースケースがあるでしょうか。

出力キャッシュ

 ITエンジニア向けの質問と回答を記録するサイトである「Stack Overflow」を運用するStackExchangeの運用でも、マスター、スレーブ構成のRedisがサイトの応答速度を向上させるための生成したページの出力キャッシュとして使われています。このRedisは、ピーク時で秒間6万件、1日あたり36億5000万件のオペレーションを行っています。

カウンター

 RedisにはINCR、DECR、INCRBYというコマンドがあり、ATOMIC動作が可能です。集計することもなく、大量のアクセスに耐えるカウント処理が可能です。例えば、ユーザー投稿型のコンテンツに対して、閲覧数などを常に保持し、表示するなどの用途に使うことができます。

リアルタイムランキング集計

 このようなランキング集計を行うケースでは、本来は定期的にバックグラウンド処理をポーリングし、集計やスコアリングを処理するケースなどがあります。Redisでは、入出力の順序が決まるソート済みセットにZRANGEBYSCOREコマンドで取得すれば、値は常にソートされたソート済みセット型から上位10個のアイテムの一覧などを高速に得ることが可能となります。公開されている事例として、ニコニコ生放送ではRedisを視聴者数ランキングのリアルタイム集計に活用しています。

最新の記事タイトル一覧をリアルタイム出力

 リアルタイムランキング同様に、例えばSNSのタイムラインのリアルタイム生成などにも使われています。サイバーエージェントのアメブロフェイスでは、ユーザーが複数の芸能人投稿者の写真をザッピングする仕組みを提供していますが、この複数投稿者の合成タイムラインをRedisのソート済みセット型を用いて生成しています。

非同期処理の高速なQueue

 「LINE」ではメッセージが送受信されていますが、これらのストレージとして「HBase」を用いています。また、このストレージに投入する非同期逐次処理に一時ストレージとしてRedisによるQueue処理を行っています。

末尾や先頭から特定件数を削除やフィルタ

 いわゆるUNIXで使う、HEADやTAILの考え方です。LREMを使えば、リストに対して、特定件数を削除することが可能になります。リスト構造にログイン時間を保持しておき、先頭から100件のみ保持し続けるケースなどがこれに当たります。

Publish/Subscribe

 Publish/Subscribeは、1対多に配信するメッセージモデルです。チャンネルという概念により、チャンネルに投稿されたメッセージは、チャンネル参加者全員に配信されます。例えば、グループチャットのアプリケーションのように、1対多のデータのやりとりをする仕組みにも、Redisを利用できます。

 RSSニュースリーダーを提供しているNewsBlurはWebSocketsとRedisのPub/Sub機能を用いて、ニュース情報のリアルタイム更新に対応しています。

*****

 いかがでしたでしょうか? 駆け足ではありましたが、NoSQL早期から多くの利用事例を持つ、KVSのデータベースであるRedisの技術的な概要と代表的なユースケースについて解説しました。今回はRedisが持つ、アーキテクチャについては、大幅に割愛しましたが、4月1日にリリースされたばかりの3.0は、ネイティブにクラスタリングにサポートするなど、注目のオープンソースNoSQLです。

 最後になりますが、クラウドパックでは、今回ご紹介したRedisに限らず、NoSQLをクラウドの上で活用したい企業にNoSQLを提供する各社と連携して、24時間365日のフルマネージドの運用と設計を提供しています。どうぞ、お気軽にお問い合わせください。

廣瀬一海(ひろせ・かずみ)
アイレット クラウドパック事業部
シニア ソリューションアーキテクト。Microsoft MVP for Microsoft Azure/畿央大学大学院在籍中
クラウド向けのMSP事業にて研究開発と現場の技術支援を行っています。クラウドを主軸に各種技術ソリューションのご相談や技術供与、研究開発を日々行う開発の傍らで、クラウドに関する講演やセミナー、執筆活動も行っています

ZDNET Japan 記事を毎朝メールでまとめ読み(登録無料)

ホワイトペーパー

新着

ランキング

  1. ビジネスアプリケーション

    生成 AI を活用した革新的な事例 56 選 課題と解決方法を一挙紹介

  2. OS

    Windows 11移行の不安を“マンガ”でわかりやすく解消!情シスと現場の疑問に応える実践ガイド

  3. ビジネスアプリケーション

    調査結果が示す「生成 AI 」活用によるソフトウェア開発の現状、ツール選定のポイントも解説

  4. ビジネスアプリケーション

    生成AI活用で変わるシステム開発の現場、生成AIでローコード開発を強化する4つの方法

  5. ビジネスアプリケーション

    RAG やベクトル埋め込みは可能か、生成 AI 活用で求められるデータベースの要件を探る

ZDNET Japan クイックポール

所属する組織のデータ活用状況はどの段階にありますか?

NEWSLETTERS

エンタープライズコンピューティングの最前線を配信

ZDNET Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]