Bloom filters are a probabilistic data structure that can dramatically speed up API responses by quickly determining whether an element is definitely not in a set, avoiding expensive lookups. This article explains how incident.io used bloom filters to achieve a 16× performance improvement in their API by eliminating unnecessary database queries. The technique is especially useful for cache optimization, spam filtering, and any scenario where fast negative lookups are critical.
#data-structures
14 件
Bloom filters are a probabilistic data structure that can dramatically improve API performance. By using a space-efficient method to test whether an element is in a set, incident.io achieved a 16x speedup in their API response times.
「Too Many Linked Lists」は、Rustで連結リストを実装しながら、所有権、借用、ライフタイムといったRustのメモリ管理の概念を深く学べるチュートリアルです。初心者から中級者向けに、安全で効率的なコードの書き方を段階的に解説します。
Decision Graphsは、意思決定プロセスを視覚的に表現するグラフ構造です。複雑な意思決定の流れを明確にし、様々な選択肢とその結果を体系的に整理することができます。
名前の付けられない形をした大量のデータが存在する。この記事では、メッセージパッシングという概念を真剣に捉え、その可能性と影響について探求する。
C言語で型安全なジェネリックデータ構造を実装する独自の手法を紹介します。このアプローチでは共用体を使用して型情報を関連付け、リンクリストを例に基本的な考え方を説明します。マップ、配列、二分木など、あらゆるデータ構造に適用可能です。
この記事では、定数時間でのインデックスアクセス、安定したポインタ、アリーナアロケータとの相性の良さを特徴とするC言語のデータ構造について説明します。これは「レベルワイズ割り当てパイル」やZigの「セグメント化リスト」としても知られ、std::dequeとは表面的な類似性しかありません。
この記事では、配列を数学的関数としてモデル化する概念的な枠組みを提案し、APLスタイルの多次元配列とデータテーブルの両方を統一的に説明します。構造体の異種性がテーブルの特性を決定し、配列の次元を任意の有限集合として一般化できることを示します。
Redisに新しい汎用データ構造「ストリーム」が導入されました。これはリスト、ソート済みセット、Pub/Subの機能を統合し、時系列データやメッセージングなど様々なユースケースに対応します。ストリームは効率的なメモリ使用と高速な範囲クエリを実現し、Redis 4.0シリーズで年内に安定版としてリリースされる予定です。
Redis 5で導入されたStreamsは、Kafkaのようなメッセージング用途だけでなく、純粋なデータ構造としても強力です。CSVファイルのような柔軟性を持ちつつ、メモリ効率が高く、時系列データやオブジェクトのロギングなど多様な用途に適用できます。従来のSorted Set + Hash方式と比べて13倍のメモリ効率を実現し、1億件のエントリーを1.8GBで格納可能です。
リンクリストの擁護
2.0リンクリストは単なるコーディング面接用のデータ構造ではなく、教育的価値があり、拡張可能で、実用的で、シンプルで、概念的な魅力を持つ重要なデータ構造です。RedisやLinuxカーネルなど多くの実システムで活用されており、計算の空間と時間に関する基本的な理解を提供します。
Redisの創設者であるantirezが、HNSW(Hierarchical Navigable Small World)データ構造の実装から得た高度な知見を共有。特にRedisの低遅延・高性能な特性に適合させるための最適化、メモリ使用量の削減(8ビット量子化)、スレッド化による高速化、ノード削除時のメモリ回収、複数プロセスへのスケーリング手法など、実用的な課題への解決策を詳細に解説。
この記事では、要素のシーケンスにおけるペアワイズ順序の概念について説明します。これは、シーケンス内の要素の相対的な順序関係を分析するための重要な概念であり、ソートアルゴリズムやデータ構造の設計において有用です。
スキップリストは、検索、挿入、削除操作において平均O(log n)の時間計算量を提供する確率的データ構造です。順序付けられたデータの効率的なアクセスを可能にし、バランス調整が不要なため実装が比較的簡単で、データベースインデックスや分散システムなど様々なアプリケーションで使用されています。