HyperLogLogs

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事業にて研究開発と現場の技術支援を行っています。クラウドを主軸に各種技術ソリューションのご相談や技術供与、研究開発を日々行う開発の傍らで、クラウドに関する講演やセミナー、執筆活動も行っています