萌えハッカーニュースリーダー

2025/09/24 21:25 Broker-Side SQL Filtering with RabbitMQ Streams

出典: https://www.rabbitmq.com/blog/2025/09/23/sql-filter-expressions
hakase
博士

ロボ子、今日はRabbitMQの面白いニュースがあるのじゃ!RabbitMQ 4.2でSQLフィルター式が導入されたらしいぞ。

roboko
ロボ子

SQLフィルターですか、博士。それは具体的にどのような機能なのでしょうか?

hakase
博士

SQLフィルターを使うと、ブローカー側でメッセージをフィルタリングできるのじゃ!つまり、不要なメッセージがクライアントに届く前に選別できるってわけ。

roboko
ロボ子

なるほど。高スループットのイベントストリームでは、大量のデータが配信されるため、関連性の低いデータも多く含まれますよね。ブローカー側でのフィルタリングは非常に重要ですね。

hakase
博士

その通り!特にRabbitMQ Streamsは、BloomフィルターとSQLフィルター式を組み合わせて、効率的なフィルタリングを実現しているらしいぞ。

roboko
ロボ子

BloomフィルターとSQLフィルターの組み合わせですか。どのように連携するのでしょうか?

hakase
博士

まずBloomフィルターで大まかにフィルタリングして、次にSQLフィルターでより詳細にフィルタリングするのじゃ。記事によると、Bloomフィルターはディスクから読み取る前に`order.created`イベントを含まないチャンク全体を排除するらしい。

roboko
ロボ子

なるほど、Bloomフィルターで不要なチャンクを事前に排除することで、SQLフィルターの負荷を軽減できるのですね。

hakase
博士

そういうこと!SQLフィルターは残りのメッセージに正確なビジネスロジックを適用するのじゃ。サンプルアプリケーションでは、1000万件のイベントをストリームにパブリッシュして、`order.created`イベントは10万件ごとに発生するらしいぞ。

roboko
ロボ子

`order.created`イベントは全体の0.001%ですか。かなり少ないですね。それだけ不要なデータが多いということですね。

hakase
博士

そうじゃな。各メッセージには、イベントタイプに設定されたBloomフィルターのアノテーションが含まれていて、効率的なチャンクレベルのフィルタリングが可能になっているらしい。

roboko
ロボ子

SQLフィルターのみを使用した場合、ブローカーは1秒あたり40万件以上のメッセージを処理できるとのことですが、Bloomフィルターと組み合わせることで、さらにパフォーマンスが向上するのですね。

hakase
博士

その通り!記事によると、BloomフィルターとSQLフィルターを組み合わせることで、1秒あたり400万件以上のメッセージをフィルタリングできるらしいぞ!

roboko
ロボ子

それはすごいですね!Kafkaユーザーも長年ブローカー側のフィルタリングを要望しているとのことですが、Kafkaにはまだこの機能がないのですね。

hakase
博士

そうみたいじゃな。RabbitMQが一歩リードって感じかの?

roboko
ロボ子

RabbitMQのこの機能は、イベント駆動型のアーキテクチャにおいて、非常に有効活用できそうですね。例えば、マイクロサービス間の通信で、特定のサービスが必要とするイベントのみを効率的に配信できますね。

hakase
博士

なるほど!他にも、IoTデバイスからのデータストリームで、異常値を検出するような場合に、特定の閾値を超えるデータのみをフィルタリングするとか、色々応用できそうじゃな。

roboko
ロボ子

確かにそうですね。不要なデータを削減することで、ネットワーク帯域幅やストレージコストも削減できますし、処理速度も向上しますね。

hakase
博士

まさに、良いことづくめじゃ!…ところでロボ子、SQLって何の略か知ってるか?

roboko
ロボ子

はい、Structured Query Languageの略です。

hakase
博士

正解!…って、知ってて当然か。じゃあ、SQLで「SELECT * FROM jokes WHERE category = '博士'」ってクエリを実行したら、何が返ってくると思う?

roboko
ロボ子

えっと…エラーですかね?

hakase
博士

ブー!正解は「最高に面白いジョーク」じゃ!…って、ジョークが返ってくるデータベースなんてないか。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search