RocksDB 図解ハンズオンVisual Hands-onGuía visualPrática visual비주얼 실습
2026.07
組み込みストレージエンジンEmbedded Storage EngineMotor de almacenamiento embebidoMotor de armazenamento embutido임베디드 스토리지 엔진

誰も設定しないのに、
どこにでもいるエンジン。
The engine everywhere,
that almost no one configures.
El motor en todas partes, que casi nadie configura.O motor em toda parte,
que quase ninguém configura.
거의 아무도 설정하지 않지만
어디에나 있는 엔진.

Kafka、MySQL、TiDB、そしてSolanaバリデータの台帳。その足元で同じ部品が動いています。文章は最小限、図とアニメで動かしながら理解しましょう。 Kafka, MySQL, TiDB, and every Solana validator's ledger run on the same part underneath. Minimal text — learn it by moving the diagrams.Kafka, MySQL, TiDB y el libro mayor de cada validador de Solana funcionan sobre la misma pieza. Texto mínimo: apréndelo moviendo los diagramas.Kafka, MySQL, TiDB e o ledger de cada validador Solana rodam sobre a mesma peça por baixo. Texto mínimo — aprenda movendo os diagramas.Kafka, MySQL, TiDB, 그리고 모든 Solana 검증자의 원장이 그 아래 같은 부품 위에서 돌아갑니다. 글은 최소한으로 — 다이어그램을 움직이며 배워 보세요.

LSM-tree 構造basedbasado enbaseado em기반 2012 LevelDB → RocksDB 最新latestúltimomais recente최신 v11 · 2026
00 · なぜ RocksDB?Why RocksDB?¿Por qué RocksDB?Por que RocksDB?왜 RocksDB인가?

サーバーではなく、ライブラリ Not a server. A library.No es un servidor. Es una biblioteca.Não é um servidor. É uma biblioteca.서버가 아닙니다. 라이브러리입니다.

RocksDBに接続するプロセスも、開くポートも、覚えるクエリ言語もありません。アプリの中で直接動き、ローカルのディスクを読み書きします。まずはその「速さの正体」を体感しましょう。 There's no process to connect to, no port to open, no query language to learn. It runs inside your app and reads/writes local disk. Let's feel where its speed comes from.No hay proceso al que conectarse, ni puerto que abrir, ni lenguaje de consulta que aprender. Corre dentro de tu app y lee/escribe en el disco local. Sintamos de dónde viene su velocidad.Não há processo para conectar, nem porta para abrir, nem linguagem de consulta para aprender. Ele roda dentro do seu app e lê/escreve no disco local. Vamos sentir de onde vem sua velocidade.연결할 프로세스도, 열 포트도, 배울 쿼리 언어도 없습니다. 앱 안에서 돌며 로컬 디스크를 읽고 씁니다. 그 속도의 정체를 느껴 봅시다.

💡

RocksDBは「データベース」ではなく、「データベースの心臓」。 RocksDB isn't a database — it's the heart inside one.RocksDB no es una base de datos: es el corazón que llevan dentro.RocksDB não é um banco de dados — é o coração dentro de um.RocksDB는 데이터베이스가 아니라, 그 안의 심장입니다. レプリケーションもシャーディングもクエリ言語も持ちません。あえて最小限。その上に載せる仕組みは、作る側が決めます。 No replication, no sharding, no query language — minimal on purpose. Whatever sits on top is yours to build.Sin replicación, sin sharding, sin lenguaje de consulta: mínimo a propósito. Lo que va encima lo construyes tú.Sem replicação, sem sharding, sem linguagem de consulta — mínimo de propósito. O que fica por cima é você quem constrói.복제도, 샤딩도, 쿼리 언어도 없습니다 — 일부러 최소화했습니다. 그 위에 올릴 것은 여러분이 만듭니다.

DEMO

ネットワークの一往復レースThe network round-trip raceLa carrera del viaje de ida y vuelta por la redA corrida da ida e volta pela rede네트워크 왕복 레이스

🤔 同じ1件を読むとき、いちばん時間を食うのはどこ? When reading one record, what usually costs the most time?Al leer un registro, ¿qué suele costar más tiempo?Ao ler um registro, o que costuma custar mais tempo?레코드 하나를 읽을 때 보통 가장 시간을 잡아먹는 것은?

Bが正解。 ローカルのSSD読み出しはマイクロ秒級ですが、別プロセス/別マシンのDBサーバーへの往復はその何倍もかかります。RocksDBはアプリと同じプロセス内で動くので、この往復がそもそも存在しません。下で走らせて確かめましょう。 B is correct. A local SSD read is microseconds, but a round-trip to a separate DB process/machine costs many times more. RocksDB runs inside your process, so that hop doesn't exist at all. Run it below to see.B es la correcta. Una lectura de un SSD local son microsegundos, pero un viaje de ida y vuelta a otro proceso/máquina de BD cuesta muchas veces más. RocksDB corre dentro de tu proceso, así que ese salto no existe en absoluto. Pruébalo abajo.B está correta. Ler de um SSD local leva microssegundos, mas uma ida e volta a outro processo/máquina de BD custa muitas vezes mais. O RocksDB roda dentro do seu processo, então esse salto simplesmente não existe. Rode abaixo para ver.B가 정답입니다. 로컬 SSD 읽기는 마이크로초 단위지만, 별도 프로세스/머신의 DB 서버까지 왕복하면 그보다 몇 배가 듭니다. RocksDB는 같은 프로세스 안에서 돌기 때문에 그 왕복이 애초에 존재하지 않습니다. 아래에서 실행해 확인하세요.
サーバー型DBServer databaseBase de datos servidorBanco de dados servidor서버형 DB アプリ → 網 → サーバー → ディスクapp → net → server → diskapp → red → servidor → discoapp → rede → servidor → disco앱 → 망 → 서버 → 디스크
🧑‍💻
App
🌐
ネットNetworkRedRede네트워크
🗄️
サーバーServerServidorServidor서버
💾
Disk
経過elapsedtranscurridodecorrido경과 0 ms* ネット往復net hopssaltos de redsaltos de rede네트워크 왕복 2
RocksDB (組み込み)(embedded)(embebido)(embutido)(임베디드) アプリの中 → ディスク直行in-process → straight to disken el proceso → directo al discono processo → direto ao disco프로세스 내부 → 디스크로 직행
🧑‍💻
App
💾
Disk
経過elapsedtranscurridodecorrido경과 0 ms* ネット往復net hopssaltos de redsaltos de rede네트워크 왕복 0
💡
*このデモの数値は概念を示す例です。実測値ではありません。「ネットワークの往復がある/ない」という構造の違いを体感するための簡略モデルです。もちろんサーバー型DBには複製・共有アクセスなどの利点があり、用途次第です。 *Numbers here are illustrative, not measurements. It's a simplified model of one structural difference: whether a network round-trip exists. Server databases have their own strengths (replication, shared access) — it depends on the job.*Las cifras son ilustrativas, no medidas. Es un modelo simplificado de una diferencia estructural: si existe o no un viaje por la red. Las bases de datos servidor tienen sus propias ventajas (replicación, acceso compartido): depende del trabajo.*Os números aqui são ilustrativos, não medições. É um modelo simplificado de uma diferença estrutural: se existe ou não uma ida e volta pela rede. Bancos servidores têm suas próprias forças (replicação, acesso compartilhado) — depende do trabalho.*여기 수치는 개념 예시일 뿐, 실측이 아닙니다. "네트워크 왕복이 있느냐 없느냐"라는 구조적 차이 하나를 단순화한 모델입니다. 서버형 DB는 나름의 강점(복제, 공유 접근)이 있습니다 — 용도에 달렸습니다.
DEMO

RocksDBを探せFind RocksDB insideEncuentra RocksDB dentroEncontre o RocksDB dentroRocksDB를 찾아라

カードをタップして、中身を見てみましょう。 Tap a card to look inside.Toca una tarjeta para mirar dentro.Toque num cartão para olhar dentro.카드를 눌러 안을 들여다보세요.

🌊Kafka Streams
insideRocksDB 処理の状態(集計・結合)をローカル保存local state store for aggregations & joinsalmacén de estado local para agregaciones y joinsarmazenamento de estado local para agregações e joins집계·조인을 위한 로컬 상태 저장소
🐬MySQL · MyRocks
insideRocksDB 容量を削るストレージエンジンとしてa storage engine to shrink footprintun motor de almacenamiento para reducir el tamañoum motor de armazenamento para reduzir o tamanho용량을 줄이는 스토리지 엔진
🐯TiDB · TiKV
insideRocksDB 分散SQLの下の各ノードのストレージ層per-node storage under distributed SQLalmacenamiento por nodo bajo SQL distribuidoarmazenamento por nó sob SQL distribuído분산 SQL 각 노드의 스토리지 계층
🐙Ceph · BlueStore
insideRocksDB オブジェクトストレージのメタデータobject-storage metadatametadatos de almacenamiento de objetosmetadados de armazenamento de objetos오브젝트 스토리지 메타데이터
Solana Validator
insideRocksDB 台帳(Blockstore)をスロット順で保存the ledger (Blockstore), keyed by slotel libro mayor (Blockstore), indexado por sloto ledger (Blockstore), indexado por slot슬롯으로 인덱싱된 원장(Blockstore)

👆 これが「組み込み(embedded)」— サーバーを立てず、アプリの一部として同居しますThis is what "embedded" means — no server to run; it lives as part of the appEsto es lo que significa «embebido»: no hay servidor que ejecutar; vive como parte de la appÉ isto que "embutido" significa — nenhum servidor para rodar; ele vive como parte do app이것이 "임베디드"의 뜻입니다 — 돌릴 서버가 없고, 앱의 일부로 존재합니다

生い立ちWhere it came fromDe dónde vieneDe onde veio어디서 왔나

LevelDBを、サーバー用に鍛え直したのがRocksDB。チップをタップすると一言で分かります。 RocksDB is LevelDB, hardened for servers. Tap a chip for a one-line explainer.RocksDB es LevelDB, endurecido para servidores. Toca una ficha para una explicación de una línea.O RocksDB é o LevelDB, reforçado para servidores. Toque numa ficha para uma explicação de uma linha.RocksDB는 서버용으로 강화된 LevelDB입니다. 칩을 눌러 한 줄 설명을 보세요.

2011
🪶
LevelDB
Google
軽量な組み込みキーバリューストアA lightweight embedded key-value storeUn almacén clave-valor embebido y ligeroUm armazenamento chave-valor embutido e leve가벼운 임베디드 키-값 저장소
👆 タップで説明tap for a hinttoca para una pistatoque para uma dica눌러서 힌트 보기
2013
🗿
RocksDB
Meta
同じ設計を、サーバーの性能を使い切るよう強化した後継The successor — same design, rebuilt to saturate server hardwareEl sucesor: mismo diseño, rehecho para saturar el hardware de servidorO sucessor — mesmo design, reconstruído para saturar o hardware de servidor후계자 — 같은 설계를, 서버 하드웨어를 포화시키도록 재구축
👆 タップで説明tap for a hinttoca para una pistatoque para uma dica눌러서 힌트 보기
💡
同じ祖先でも、この10年で大きく分岐。もう「同じもの」とは呼べません。2017年にデュアルライセンス化し、今も毎月更新される現役です(最新 v11・2026)。 Same ancestor, but a decade apart. They're no longer interchangeable. Dual-licensed since 2017, still shipping monthly (latest v11, 2026).Mismo origen, pero con una década de distancia. Ya no son intercambiables. Con licencia dual desde 2017, aún con lanzamientos mensuales (última v11, 2026).Mesmo ancestral, mas com uma década de distância. Já não são intercambiáveis. Com licença dupla desde 2017, ainda com lançamentos mensais (última v11, 2026).같은 조상이지만 10년의 거리. 이제 서로 대체할 수 없습니다. 2017년부터 듀얼 라이선스, 지금도 매달 릴리스(최신 v11, 2026).
01 · 書き込みの旅The write pathLa ruta de escrituraO caminho de escrita쓰기 경로

書き込みは、二手に分かれるA write goes two places at onceUna escritura va a dos sitios a la vezUma escrita vai a dois lugares ao mesmo tempo쓰기는 한 번에 두 곳으로

1件の書き込みは、いきなりディスクの奥へ沈むのではありません。まず「速さ担当」と「消えない担当」の2か所へ同時に届きます。動かして確かめましょう。 A write doesn't sink straight to disk. It lands in two places at once — one for speed, one for durability. Run it and watch.Una escritura no cae directa al disco. Aterriza en dos sitios a la vez: uno para velocidad, otro para durabilidad. Ejecútalo y observa.Uma escrita não afunda direto no disco. Ela pousa em dois lugares ao mesmo tempo — um para velocidade, outro para durabilidade. Rode e observe.쓰기는 곧바로 디스크로 가라앉지 않습니다. 한 번에 두 곳에 도착합니다 — 하나는 속도용, 하나는 내구성용. 실행해서 보세요.

💡

書き込みは、memtable と WAL へ同時に Simultaneously to the memtable and the WAL.Al mismo tiempo a la memtable y al WAL.Ao mesmo tempo na memtable e no WAL.memtable과 WAL에 동시에. memtable=メモリ上で速い。WAL=ディスク上で消えない。速さと安全を、2か所で同時に手に入れます。 The memtable (in memory) is fast; the WAL (on disk) survives crashes. Speed and safety, captured in parallel.La memtable (en memoria) es rápida; el WAL (en disco) sobrevive a caídas. Velocidad y seguridad, capturadas en paralelo.A memtable (em memória) é rápida; o WAL (no disco) sobrevive a falhas. Velocidade e segurança, capturadas em paralelo.memtable(메모리)은 빠르고, WAL(디스크)은 장애에서 살아남습니다. 속도와 안전을 병렬로 잡습니다.

DEMO

書き込みの流れを、1ステップずつThe write path, one step at a timeLa ruta de escritura, paso a pasoO caminho de escrita, passo a passo쓰기 경로, 한 걸음씩

put( — )
同時にat oncea la vezao mesmo tempo동시에
📜 WAL 追記ログ・ディスクappend-log · on diskregistro de anexado · en discolog de anexação · no disco추가 전용 로그 · 디스크
memtable メモリ・キー順in memory · sorteden memoria · ordenadaem memória · ordenada메모리 · 정렬됨
ON DISK · LSMSST とは?what’s an SST?¿qué es un SST?o que é um SST?SST란?
L0 memtableが満杯になると、ここにSSTが1枚できますwhen the memtable fills, one SST lands herecuando la memtable se llena, aquí aterriza un SSTquando a memtable enche, um SST pousa aquimemtable이 차면 SST 하나가 여기 내려옵니다
👆 WAL / memtable / SST の「?」をタップすると、用語が一言で分かりますtap the “?” on WAL / memtable / SST for a one-line definitiontoca la «?» de WAL / memtable / SST para una definición de una líneatoque no «?» de WAL / memtable / SST para uma definição de uma linhaWAL / memtable / SST의 «?»를 누르면 한 줄 정의가 나옵니다
DEMO

なぜ WAL がいるの? ⚡電源を切ってみるWhy the WAL? ⚡ Pull the plug¿Para qué el WAL? ⚡ DesenchufaPor que o WAL? ⚡ Tire da tomadaWAL은 왜? ⚡ 플러그를 뽑아라

OFFにして試すと、結果が変わりますflip it OFF and the ending changesdesactívalo y el final cambiadesligue e o final muda끄면 결말이 바뀝니다
メモリが消えた…memory lost…memoria perdida…memória perdida…메모리 소실…
📜 WAL 起点sourcefuentefonte원본
ディスク上(電源が切れても残る)on disk (survives power loss)en disco (sobrevive a cortes de energía)no disco (sobrevive à queda de energia)디스크 (정전에도 생존)
まだ空ですemptyvacíovazio비어 있음
⚡ memtable
メモリ上(電源が切れると消える)in memory (gone on power loss)en memoria (se pierde al cortarse la energía)em memória (some na queda de energia)메모리 (정전 시 사라짐)
まだ空ですemptyvacíovazio비어 있음
WALを読んで復元rebuild from WALreconstruir desde el WALreconstruir do WALWAL에서 재구축
💡
電源が切れるとメモリのmemtableは消えます。でも再起動でWALを再生すれば元通り。WALをOFFにすると、消えたデータは戻りません(書き込みごとの同期タイミングは調整可能ですが、ここでは省略) A power cut wipes the in-memory memtable — but rebooting replays the WAL and restores it. With the WAL OFF, the lost data never comes back. (fsync timing is configurable; omitted here.)Un corte de energía borra la memtable en memoria, pero al reiniciar se reproduce el WAL y se restaura. Con el WAL DESACTIVADO, los datos perdidos no vuelven nunca. (el momento del fsync es configurable; se omite aquí.)Uma queda de energia apaga a memtable em memória — mas reiniciar reproduz o WAL e a restaura. Com o WAL DESLIGADO, os dados perdidos nunca voltam. (o momento do fsync é configurável; omitido aqui.)정전은 메모리의 memtable을 날려버립니다 — 하지만 재부팅하면 WAL을 재생해 복원합니다. WAL을 끄면 잃은 데이터는 다시는 돌아오지 않습니다. (fsync 시점은 설정 가능하며, 여기서는 생략.)
DEMO

「消した」のに、消えていない 🪦You “deleted” it — but it's still there 🪦Lo «borraste», pero sigue ahí 🪦Você o «apagou» — mas ele ainda está lá 🪦«삭제»했지만 — 아직 거기 있습니다 🪦

今このキーを読むとReading the key nowLeyendo la clave ahoraLendo a chave agora이제 키를 읽는 중
ディスク上に実際にあるものwhat actually sits on disklo que de verdad hay en discoo que de fato está no disco디스크에 실제로 있는 것
まだ何もありませんnothing yetnada aúnnada ainda아직 없음
💡
上書きは古い値の上に新しい値を積むだけ。削除は🪦墓石という印を積むだけ。古いものは消えず、読み取りはいちばん新しい版を返します。本当に消えるのは、コンパクション(掃除)の時です。 Overwrite just stacks a newer value on the old one; delete just stacks a 🪦 tombstone. Nothing is erased in place — a read returns the newest version. Actual removal happens only during compaction.Sobrescribir solo apila un valor más nuevo sobre el viejo; borrar solo apila una 🪦 lápida. Nada se borra en su sitio: una lectura devuelve la versión más nueva. La eliminación real ocurre solo durante la compactación.Sobrescrever apenas empilha um valor mais novo sobre o antigo; apagar apenas empilha uma 🪦 lápide. Nada é apagado no lugar — uma leitura retorna a versão mais nova. A remoção real só acontece durante a compactação.덮어쓰기는 옛 값 위에 더 새로운 값을 쌓을 뿐이고, 삭제는 🪦 툼스톤을 쌓을 뿐입니다. 제자리에서 지워지는 것은 없고 — 읽기는 가장 새로운 버전을 돌려줍니다. 실제 제거는 컴팩션 때만 일어납니다.
02 · 読み取りの旅The read pathLa ruta de lecturaO caminho de leitura읽기 경로

1件を探すには、上から下へFinding one key: top to bottomEncontrar una clave: de arriba abajoEncontrar uma chave: de cima a baixo키 하나 찾기: 위에서 아래로

書き込みは一本道でした。読み取りは逆に「探索」です。新しい場所から古い場所へ、見つかるまで降りていきます。ひとつだけクセがあります。 Writing was a straight line. Reading is a search — from newest to oldest, descending until the key turns up. There's one quirk.Escribir fue una línea recta. Leer es una búsqueda: del más nuevo al más viejo, bajando hasta que aparece la clave. Hay una peculiaridad.Escrever foi uma linha reta. Ler é uma busca — do mais novo ao mais antigo, descendo até a chave aparecer. Há uma peculiaridade.쓰기는 직선이었습니다. 읽기는 탐색입니다 — 최신에서 오래된 것까지, 키가 나올 때까지 내려갑니다. 한 가지 묘한 점이 있습니다.

💡

L0 だけは、全ファイルを調べる。 At L0, you must check every fileEn L0 hay que revisar todos los archivosNo L0, é preciso checar todos os arquivosL0에서는 모든 파일을 확인해야 합니다 L0のファイルはキー範囲が重なり合うため、範囲だけでは絞れません。L1以降は重ならないので、範囲から1ファイルだけを選べます。 L0 files have overlapping key ranges, so ranges can't narrow it down. From L1 down they don't overlap — so one file per level is enough.Los archivos de L0 tienen rangos de clave solapados, así que el rango no basta para acotar. De L1 hacia abajo no se solapan, así que un archivo por nivel es suficiente.Os arquivos do L0 têm faixas de chave sobrepostas, então a faixa não ajuda a restringir. Do L1 para baixo não se sobrepõem — então um arquivo por nível basta.L0 파일들은 키 범위가 겹치므로 범위로 좁힐 수 없습니다. L1 아래로는 겹치지 않으므로 — 레벨당 파일 하나면 충분합니다.

DEMO

Get の旅 — 見つかるまで降りるA Get, descending until it hitsUn Get que baja hasta acertarUm Get, descendo até acertar적중할 때까지 내려가는 Get

get( "p" ) 開いたSSTファイルSST files openedarchivos SST abiertosarquivos SST abertos연 SST 파일 0
赤い縦線 = 探しているキー "p" の位置(全レベル共通)。ファイルの [a‑g] はそのファイルが含みうる範囲です。 Red line = position of the key "p" (same across all levels). A file's [a‑g] is the range it may hold.Línea roja = posición de la clave "p" (igual en todos los niveles). El [a‑g] de un archivo es el rango que podría contener.Linha vermelha = posição da chave "p" (igual em todos os níveis). O [a‑g] de um arquivo é a faixa que ele pode conter.빨간 선 = 키 "p"의 위치(모든 레벨에서 동일). 파일의 [a‑g]담고 있을 수 있는 범위입니다.
memメモリmemorymemoriamemória메모리
c f k x
L0
a‑p h‑z c‑t
重なり→全部overlap → allsolape → todossobreposição → todos겹침 → 전부
L1
a‑g h‑n o‑u v‑z
"p"を含む1枚the one with "p"el que tiene "p"o que tem "p""p"가 있는 것
L2
a‑f g‑l m‑r s‑z
区切りが違う!different split!¡división distinta!divisão diferente!구획이 다름!
結果resultresultadoresultado결과 探索前not startedsin empezarnão iniciado시작 전
💡
読み取りは memtable → L0 → L1 → … と降りて、見つかった時点で止まります。範囲 [a‑p] は「入っているかもしれない目安」で、範囲に入る=必ずある、ではありません。探すキーはずっと "p" のまま。変わるのは各レベルでの区切り方だけで、L1では [o‑u]、L2では [m‑r] と、同じ "p" でも入るファイルが違います。L0は重なるので全ファイル、L1以降は1ファイルだけを見ます。 A read descends memtable → L0 → L1 → … and stops the moment it hits. A range like [a‑p] only means "might be here" — being in range does not guarantee the key is present. The key stays "p"; what changes per level is the file boundaries: "p" lands in [o‑u] at L1 but [m‑r] at L2. L0 needs every file; from L1 down, just one.Una lectura baja memtable → L0 → L1 → … y para en cuanto acierta. Un rango como [a‑p] solo significa «podría estar aquí»: estar en el rango no garantiza que la clave exista. La clave sigue siendo "p"; lo que cambia por nivel son los límites de los archivos: "p" cae en [o‑u] en L1 pero en [m‑r] en L2. L0 necesita todos los archivos; de L1 hacia abajo, solo uno.Uma leitura desce memtable → L0 → L1 → … e para no instante em que acerta. Uma faixa como [a‑p] só significa "pode estar aqui" — estar na faixa não garante que a chave exista. A chave continua "p"; o que muda por nível são os limites dos arquivos: "p" cai em [o‑u] no L1, mas em [m‑r] no L2. O L0 precisa de todos os arquivos; do L1 para baixo, apenas um.읽기는 memtable → L0 → L1 → …로 내려가다 적중하는 순간 멈춥니다. [a‑p] 같은 범위는 "여기 있을 수도"라는 뜻일 뿐 — 범위 안에 있다고 키가 있다는 보장은 아닙니다. 키는 "p" 그대로이고, 레벨마다 바뀌는 것은 파일 경계입니다: "p"는 L1에서는 [o‑u], L2에서는 [m‑r]에 속합니다. L0는 모든 파일이 필요하고, L1 아래로는 하나면 됩니다.
DEMO

Bloomフィルタ — 開ける前にふるいにかける 🌸Bloom filters — sift before you open 🌸Filtros Bloom: tamiza antes de abrir 🌸Filtros Bloom — peneire antes de abrir 🌸블룸 필터 — 열기 전에 걸러라 🌸

get( "jazz" )
SST #1
SST #2
SST #3
💡
Bloomフィルタが「ない」と言えば、そのファイルは100%入っていないので、開かずにスキップ(速い)。「あるかも」は外れることがある(偽陽性)ので、開いてみたら無い、も起こります。ただし「あるのに無いと言う」ことは絶対にありません。なお、範囲検索(スキャン)には効きません。 If the filter says “no,” the key is 100% not there — skip the file, no disk read. A “maybe” can be wrong (a false positive), so you may open it and find nothing. But it never says “no” for a key that's actually present. And it doesn't help range scans.Si el filtro dice «no», la clave 100% no está: omite el archivo, sin leer disco. Un «quizás» puede fallar (un falso positivo), así que quizá lo abras y no haya nada. Pero nunca dice «no» para una clave que sí está. Y no ayuda en escaneos de rango.Se o filtro diz «não», a chave 100% não está lá — pule o arquivo, sem ler o disco. Um «talvez» pode errar (um falso positivo), então você pode abrir e não achar nada. Mas ele nunca diz «não» para uma chave que de fato existe. E não ajuda em varreduras de faixa.필터가 «없다»고 하면 그 키는 100% 없습니다 — 파일을 건너뛰고 디스크를 읽지 않습니다. «아마»는 틀릴 수 있어(거짓 양성) 열어도 아무것도 없을 수 있습니다. 하지만 실제로 있는 키에 대해 «없다»고 하는 일은 결코 없습니다. 그리고 범위 스캔에는 도움이 안 됩니다.
DEMO

種明かし:ずっと「LSMツリー」の話でしたThe reveal: it was the LSM-tree all alongLa revelación: siempre fue el árbol LSMA revelação: era a árvore LSM o tempo todo정체 공개: 처음부터 LSM 트리였다

🗿

第1章の「積む」形も、第2章の「探索」も、正体は LSMツリー The “stacking” from ch.1 and the “search” from ch.2 are both one design: the LSM-treeEl «apilado» del cap.1 y la «búsqueda» del cap.2 son un mismo diseño: el árbol LSMO «empilhamento» do cap.1 e a «busca» do cap.2 são um só design: a árvore LSM1장의 «쌓기»와 2장의 «탐색»은 하나의 설계입니다: LSM 트리 世の中の多くのDB(MySQLなど)は B-tree という別設計。両者は得意が逆です — どちらが上、ではありません。 Many databases (e.g. MySQL) use a different design, the B-tree. Their strengths are opposite — neither is simply “better.”Muchas bases de datos (p. ej. MySQL) usan otro diseño, el árbol B. Sus fortalezas son opuestas: ninguno es sin más «mejor».Muitos bancos (p. ex. MySQL) usam outro design, a árvore B. Suas forças são opostas — nenhum é simplesmente «melhor».많은 DB(예: MySQL)는 다른 설계인 B 트리를 씁니다. 둘의 강점은 정반대라 — 어느 쪽도 그냥 «더 낫다»고 할 수 없습니다.

その違いを、同じ鍵 x を3回書き換えて読むだけで確かめます。 See the difference by overwriting one key x three times, then reading it.Ve la diferencia sobrescribiendo una clave x tres veces y luego leyéndola.Veja a diferença sobrescrevendo uma chave x três vezes e depois lendo-a.x를 세 번 덮어쓴 뒤 읽어서 차이를 보세요.

🌲 B-tree 読み◎ 書き△read◎ write△lectura◎ escritura△leitura◎ escrita△읽기◎ 쓰기△
その場に上書き(MySQLなど)overwrite in place (e.g. MySQL)sobrescribe en su sitio (p. ej. MySQL)sobrescreve no lugar (p. ex. MySQL)제자리 덮어쓰기 (예: MySQL)
emptyvacíovazio비어 있음
鍵 x の在りかcopies of xcopias de xcópias de xx의 사본 0か所place(s)sitio(s)lugar(es)
🗿 LSM 書き◎ 読み△write◎ read△escritura◎ lectura△escrita◎ leitura△쓰기◎ 읽기△
末尾に追記(RocksDB)append (RocksDB)anexa al final (RocksDB)anexa (RocksDB)추가 (RocksDB)
emptyvacíovazio비어 있음
鍵 x の在りかcopies of xcopias de xcópias de xx의 사본 0か所place(s)sitio(s)lugar(es)
💡
どちらが上、ではありません。得意が逆です。B-treeは1か所を保つので読みが速い代わりに書きで飛ぶ。LSM(RocksDB)は追記だけで書きが速い代わりに、同じ鍵が複数に増えて読みは探索。RocksDBが書き込みの多い用途(第0章のSolanaやKafka)向けなのはこのため。読みの手間は、Bloomフィルタ(この章)とコンパクション(第1章)で小さく保ちます。 Neither is “better” — their strengths are opposite. A B-tree keeps one copy → fast reads, but writes jump around. An LSM (RocksDB) only appends → fast writes, but a key piles up in many places → reads search. That's why RocksDB fits write-heavy jobs (Solana, Kafka from ch.0). The read cost is kept small by Bloom filters (this chapter) and compaction (ch.1).Ninguno es «mejor»: sus fortalezas son opuestas. Un árbol B guarda una copia → lecturas rápidas, pero las escrituras saltan por todos lados. Un LSM (RocksDB) solo anexa → escrituras rápidas, pero una clave se acumula en muchos sitios → las lecturas buscan. Por eso RocksDB encaja en trabajos con muchas escrituras (Solana, Kafka del cap.0). El coste de lectura se mantiene bajo con filtros Bloom (este capítulo) y compactación (cap.1).Nenhum é «melhor» — suas forças são opostas. Uma árvore B mantém uma cópia → leituras rápidas, mas as escritas pulam por toda parte. Uma LSM (RocksDB) só anexa → escritas rápidas, mas uma chave se acumula em muitos lugares → as leituras buscam. Por isso o RocksDB serve para trabalhos com muita escrita (Solana, Kafka do cap.0). O custo de leitura é mantido baixo por filtros Bloom (este capítulo) e compactação (cap.1).어느 쪽도 «더 낫지» 않습니다 — 강점이 정반대입니다. B 트리는 사본만 유지 → 읽기가 빠르지만 쓰기가 여기저기 튑니다. LSM(RocksDB)은 추가만 → 쓰기가 빠르지만 한 키가 여러 곳에 쌓여 → 읽기가 탐색합니다. 그래서 RocksDB는 쓰기가 많은 작업(Solana, 0장의 Kafka)에 맞습니다. 읽기 비용은 블룸 필터(이 장)와 컴팩션(1장)으로 작게 유지됩니다.
03 · 増幅の三角形The amplification triangleEl triángulo de amplificaciónO triângulo da amplificação증폭의 삼각형 中級intermediateintermediointermediário중급

2つ良くすると、1つ悪くなるImprove two, worsen the thirdMejora dos, empeora el terceroMelhore dois, piore o terceiro둘을 개선하면, 셋째가 나빠진다

速い書き込み・速い読み取り・小さい容量。この3つは、同時に全部は手に入りません。RocksDBのチューニングは、結局この綱引きです。 Fast writes, fast reads, small footprint — you can't have all three at once. Tuning RocksDB is really this tug-of-war.Escrituras rápidas, lecturas rápidas, poco espacio: no puedes tener los tres a la vez. Ajustar RocksDB es en realidad este tira y afloja.Escritas rápidas, leituras rápidas, pouco espaço — não dá para ter os três ao mesmo tempo. Ajustar o RocksDB é realmente este cabo de guerra.빠른 쓰기, 빠른 읽기, 작은 용량 — 셋을 동시에 가질 수는 없습니다. RocksDB 튜닝은 사실 이 줄다리기입니다.

💡

同じデータを何度も書き直す。それが「増幅」。 The same data gets rewritten many times. That's amplificationLos mismos datos se reescriben muchas veces. Eso es amplificaciónOs mesmos dados são reescritos muitas vezes. Isso é amplificação같은 데이터가 여러 번 다시 쓰입니다. 그것이 증폭입니다 Write(書き込み)・Read(読み取り)・Space(容量)の3つの増幅。どれか2つを小さくすると、残り1つが必ず膨らみます。 Three of them — Write, Read, Space. Shrink any two and the third always swells.Tres tipos: Escritura, Lectura, Espacio. Reduce dos cualesquiera y el tercero siempre crece.São três — Escrita, Leitura, Espaço. Reduza dois quaisquer e o terceiro sempre incha.세 가지 — 쓰기, 읽기, 공간. 둘을 줄이면 나머지 하나가 늘 부풀어 오릅니다.

DEMO

1バイトの旅 — 書いたのは1、ディスクは?A byte's journey — you wrote 1, the disk wrote…?El viaje de un byte: escribiste 1, ¿y el disco escribió…?A jornada de um byte — você escreveu 1, o disco escreveu…?1바이트의 여정 — 당신은 1을 썼는데, 디스크는…?

L0 +1🔵
L1 +2🔵
L2 +10🔵
L3 +10🔵
L4 +10🔵
書いたデータyour datatus datosseus dados당신의 데이터 1
ディスク書き込みdisk writesescrituras en discoescritas no disco디스크 쓰기 0
書き込み増幅write ampamp. escrituraamp. escrita쓰기 증폭
💡
下の階層は約10倍大きいので、移るたびに大量のデータと一緒に書き直されます。合計は 1+2+10+10+10 ≈ 33。つまり1バイト書くとディスクには約33バイト。これがLeveled方式の代償で、だから次の「方式選び」が効いてきます。 Each lower level is ~10× bigger, so moving down rewrites the byte alongside a lot of other data. The total is 1+2+10+10+10 ≈ 33 — write 1 byte, the disk writes ~33. That's the cost of the Leveled style, which is why the next demo (picking a style) matters.Cada nivel inferior es ~10× más grande, así que bajar reescribe el byte junto a muchos otros datos. El total es 1+2+10+10+10 ≈ 33: escribes 1 byte y el disco escribe ~33. Ese es el coste del estilo Leveled, y por eso importa la siguiente demo (elegir estilo).Cada nível inferior é ~10× maior, então descer reescreve o byte junto de muitos outros dados. O total é 1+2+10+10+10 ≈ 33 — escreve 1 byte e o disco escreve ~33. Esse é o custo do estilo Leveled, e por isso a próxima demo (escolher um estilo) importa.각 하위 레벨은 ~10배 크므로, 아래로 내려가면 그 바이트가 다른 많은 데이터와 함께 다시 쓰입니다. 합계는 1+2+10+10+10 ≈ 33 — 1바이트를 쓰면 디스크는 ~33을 씁니다. 이것이 Leveled 방식의 비용이며, 그래서 다음 데모(방식 고르기)가 중요합니다.
DEMO

方式を選ぶと、三角形が変わるPick a style, reshape the triangleElige un estilo, remodela el triánguloEscolha um estilo, remodele o triângulo방식을 골라 삼각형을 다시 그려라

Write Read Space
Write 書き込みwrite ampamp. escrituraamp. escrita쓰기 증폭
Read 読み取りread ampamp. lecturaamp. leitura읽기 증폭
Space 容量space ampamp. espacioamp. espaço공간 증폭
💡
3つ同時に最小化できる方式はありません。Leveled(既定)は容量・読み取りが小さく書き込みが重い。Universalは書き込みを軽くする代わりに読み取り・容量が増える。FIFOは書き込みほぼゼロ増だが、重複や墓石を消さないので用途が限られます(時系列ログ向き — 第4章のSolanaが好例)。数値は傾向を示す例です。 No style minimizes all three. Leveled (default) keeps space and reads small but writes hard. Universal eases writes but raises read and space. FIFO barely amplifies writes but never dedups or drops tombstones, so it fits narrow cases (time-series logs — see Solana in ch.4). Figures are illustrative of the trend.Ningún estilo minimiza los tres. Leveled (por defecto) mantiene bajos el espacio y la lectura pero escribe con fuerza. Universal alivia la escritura pero sube lectura y espacio. FIFO apenas amplifica la escritura pero nunca deduplica ni elimina lápidas, así que encaja en casos concretos (registros de series temporales; ver Solana en el cap.4). Las cifras ilustran la tendencia.Nenhum estilo minimiza os três. Leveled (padrão) mantém espaço e leituras baixos, mas escreve com força. Universal alivia as escritas, mas eleva leitura e espaço. FIFO mal amplifica as escritas, mas nunca deduplica nem remove lápides, então serve a casos específicos (logs de série temporal — veja Solana no cap.4). Os números ilustram a tendência.어떤 방식도 셋을 모두 최소화하지 못합니다. Leveled(기본)는 공간과 읽기를 작게 하지만 쓰기가 힘듭니다. Universal은 쓰기를 덜지만 읽기와 공간이 커집니다. FIFO는 쓰기를 거의 증폭하지 않지만 중복 제거도 툼스톤 제거도 하지 않아, 좁은 경우(시계열 로그 — 4장의 Solana 참고)에 맞습니다. 수치는 경향을 나타냅니다.
04 · 使う人々Who uses itQuién lo usaQuem usa쓰는 곳

世界の足元と、Solanaの台帳Underneath the world — and Solana's ledgerBajo el mundo, y el libro mayor de SolanaPor baixo do mundo — e o ledger da Solana세상의 밑바닥 — 그리고 Solana의 원장

ここまで見た仕組みは、実世界の大物たちの足元で動いています。最後に、いちばん過酷な使い手 — Solanaのバリデータ — を覗きます。 Everything so far runs underneath some heavyweight systems. Let's end with its most punishing user — a Solana validator.Todo lo anterior corre bajo algunos sistemas de peso. Terminemos con su usuario más exigente: un validador de Solana.Tudo até aqui roda sob alguns sistemas de peso. Vamos terminar com seu usuário mais exigente — um validador Solana.지금까지의 모든 것은 몇몇 무거운 시스템의 밑에서 돕니다. 가장 혹독한 사용자 — Solana 검증자로 끝맺읍시다.

🌍

「使い手」を選ぶと、何を保存しているかが分かります。 Tap a user to see what it stores in RocksDB.Toca un usuario para ver qué guarda en RocksDB.Toque num usuário para ver o que ele guarda no RocksDB.사용자를 눌러 RocksDB에 무엇을 저장하는지 보세요.

MAP

RocksDB が動いている場所Where RocksDB runsDónde corre RocksDBOnde o RocksDB rodaRocksDB가 도는 곳

ストリーム処理streamingstreamingstreaming스트리밍
データベースdatabasesbases de datosbancos de dados데이터베이스
ストレージstoragealmacenamientoarmazenamento스토리지
ブロックチェーンblockchainblockchainblockchain블록체인
👆 チップをタップすると、そこで何を保存しているか出ますtap a chip to see what it stores theretoca una ficha para ver qué guarda ahítoque numa ficha para ver o que guarda ali칩을 눌러 거기에 무엇을 저장하는지 보세요
DEMO

Solana の台帳「Blockstore」を解剖するDissecting Solana's "Blockstore"Diseccionando el «Blockstore» de SolanaDissecando o «Blockstore» da SolanaSolana의 «Blockstore» 해부

1つのRocksDBを、用途別の カラムファミリー(独立・個別調整できるキー空間)に区切っています。まずブロックを届けて、次にタップして中身を見ましょう。 One RocksDB, split into column families — independent, individually tunable keyspaces. Deliver a block, then tap to look inside.Un RocksDB, dividido en familias de columnas: espacios de clave independientes y ajustables por separado. Entrega un bloque y luego toca para mirar dentro.Um RocksDB, dividido em famílias de colunas — keyspaces independentes e ajustáveis individualmente. Entregue um bloco e depois toque para olhar dentro.하나의 RocksDB를 컬럼 패밀리로 나눕니다 — 독립적이고 개별로 튜닝 가능한 키스페이스. 블록을 전달한 뒤, 눌러서 안을 보세요.

🌐 ネットワークから届いたシュレッド(残ります)shreds arrived from the network (they stay)shreds llegados de la red (se quedan)shreds chegaram da rede (eles ficam)네트워크에서 도착한 shred (그대로 남음)
🌐 まだ届いていませんnothing yetnada aúnnada ainda아직 없음
◎ Blockstore = 1× RocksDB
Agaveバリデータの台帳ストアthe Agave validator's ledger storeel almacén del libro mayor del validador de Agaveo armazenamento de ledger do validador AgaveAgave 검증자의 원장 저장소
👆 カラムファミリーをタップすると、その中身が分かりますtap a column family to see what it holdstoca una familia de columnas para ver qué contienetoque numa família de colunas para ver o que ela contém컬럼 패밀리를 눌러 무엇을 담는지 보세요
💡
用途別に分けるのは、それぞれ性質が違うから。シュレッドと誤り訂正符号は届いた瞬間にスロット順で書かれ、TXステータスは実行後に、索引は後から引かれます。カラムファミリーごとに別々に調整でき、1件の挿入で複数のカラムファミリーを更新するときは WriteBatchまとめて一貫性を保ちます(途中でクラッシュしても中途半端になりません)。未剪定の台帳は数百TB、年に数十TB増えます。 They're split because each behaves differently: shreds and erasure codes are written on arrival in slot order, statuses after execution, indexes are queried later. Each column family is tuned separately, and when one insert touches several of them, a WriteBatch keeps them consistent together (no half-written state on a crash). An unpruned ledger exceeds hundreds of TB and grows tens of TB/year.Se separan porque cada una se comporta distinto: los shreds y los códigos de corrección se escriben al llegar en orden de slot, los estados tras la ejecución, y los índices se consultan después. Cada familia de columnas se ajusta por separado, y cuando una inserción toca varias, un WriteBatch las mantiene consistentes en conjunto (sin estados a medio escribir tras una caída). Un libro mayor sin podar supera cientos de TB y crece decenas de TB al año.Elas são separadas porque cada uma se comporta de modo diferente: shreds e códigos de correção são escritos na chegada em ordem de slot, os status após a execução, e os índices são consultados depois. Cada família de colunas é ajustada separadamente, e quando uma inserção toca várias delas, um WriteBatch as mantém consistentes juntas (sem estado pela metade numa falha). Um ledger não podado passa de centenas de TB e cresce dezenas de TB/ano.나뉜 이유는 각자 동작이 다르기 때문입니다: shred와 소거 코드는 슬롯 순서로 도착 시 쓰이고, 상태는 실행 후, 색인은 나중에 조회됩니다. 각 컬럼 패밀리는 따로 튜닝되며, 한 번의 삽입이 여러 개를 건드릴 때 WriteBatch함께 일관되게 유지합니다(장애 시 반만 쓰인 상태 없음). 정리되지 않은 원장은 수백 TB를 넘고 매년 수십 TB씩 늘어납니다.
DEMO

FIFO の物語 — ワークロードに完璧に噛み合った選択 🍢The FIFO story — a perfect fit, then retired 🍢La historia de FIFO: encaje perfecto y luego retirado 🍢A história do FIFO — encaixe perfeito, depois aposentado 🍢FIFO 이야기 — 완벽한 적합, 그리고 은퇴 🍢

古い(先に消える)oldest (dropped first)más viejo (se elimina primero)mais antigo (descartado primeiro)가장 오래됨 (먼저 삭제)新しい(追記)newest (appended)más nuevo (anexado)mais novo (anexado)가장 새로움 (추가됨)
スロット順に積まれた「シュレッドファイル」shred files, stacked in slot orderarchivos de shred, apilados en orden de slotarquivos de shred, empilhados em ordem de slot슬롯 순서로 쌓인 shred 파일
2021
採用adoptadopciónadoção채택
write stall を回避avoid write stallsevitar bloqueos de escrituraevitar travas de escrita쓰기 정체 회피
2024.6
非推奨deprecateobsoletodescontinuado지원 중단
🔧 Leveledが追いついたLeveled caught upLeveled se puso al díaLeveled alcançouLeveled가 따라잡음
2024.11
削除removeeliminaciónremoção제거
🏁 fifo option 廃止(v2.2)option gone (v2.2)opción eliminada (v2.2)opção removida (v2.2)옵션 삭제 (v2.2)
💡
FIFOは「Leveledでコンパクションが追いつかず書き込みが止まる(write stall)」のを避ける策でした。Leveledの改善(L0→L1の並列化など)で不要になり、Agaveの --rocksdb-shred-compaction fifo オプションが廃止。※数値は概念用の例です。 FIFO existed to dodge write stalls (Leveled falling behind and halting writes). Leveled improved (e.g. parallel L0→L1) until it was unnecessary, and Agave's --rocksdb-shred-compaction fifo option was dropped. Figures are illustrative.FIFO existía para esquivar los bloqueos de escritura (Leveled quedándose atrás y deteniendo las escrituras). Leveled mejoró (p. ej. L0→L1 en paralelo) hasta hacerlo innecesario, y se eliminó la opción --rocksdb-shred-compaction fifo de Agave. Las cifras son ilustrativas.O FIFO existia para evitar travas de escrita (o Leveled ficando para trás e parando as escritas). O Leveled melhorou (p. ex. L0→L1 em paralelo) até se tornar desnecessário, e a opção --rocksdb-shred-compaction fifo do Agave foi removida. Os números são ilustrativos.FIFO는 쓰기 정체(Leveled가 뒤처져 쓰기를 멈추는 것)를 피하려고 존재했습니다. Leveled가 개선되어(예: L0→L1 병렬) 불필요해질 때까지, 그리고 Agave의 --rocksdb-shred-compaction fifo 옵션이 삭제되었습니다. 수치는 예시입니다.

シリーズの中での位置づけWhere this sits in the seriesDónde encaja esto en la serieOnde isto se encaixa na série이 글이 시리즈에서 놓인 자리

Solanaを速くする層は、役割分担で成り立っています。RocksDB はその「記録」担当。 Solana's speed comes from a division of layers. RocksDB is the "recording" one.La velocidad de Solana viene de una división de capas. RocksDB es la de «registro».A velocidade da Solana vem de uma divisão de camadas. O RocksDB é a de "gravação".Solana의 속도는 계층의 분담에서 나옵니다. RocksDB는 "기록" 담당입니다.

実行executionejecuciónexecução실행
Firedancer
前作guideguíaguia가이드
配線wiringcableadofiação배선
DoubleZero
前作guideguíaguia가이드
💡
正直ポイント:Jump CryptoのFiredancerはRocksDBを完全に捨て、独自ストレージを採用しています。ハイブリッドのFrankendancerは今もAgaveのRocksDB Blockstoreを使用。「自作ストレージが、10年鍛えたRocksDBを超えられるか」はバリデータ工学の面白い未解決問題です。 Honesty note: Jump Crypto's Firedancer drops RocksDB entirely for a purpose-built store. The hybrid Frankendancer still runs the Agave RocksDB Blockstore. Whether a from-scratch engine can beat a decade of RocksDB hardening is an open question in validator engineering.Nota de honestidad: el Firedancer de Jump Crypto abandona RocksDB por completo por un almacén hecho a medida. El híbrido Frankendancer aún usa el Blockstore de RocksDB de Agave. Si un motor hecho desde cero puede superar una década de endurecimiento de RocksDB es una pregunta abierta en la ingeniería de validadores.Nota de honestidade: o Firedancer da Jump Crypto abandona o RocksDB por completo em favor de um armazenamento sob medida. O híbrido Frankendancer ainda usa o Blockstore RocksDB do Agave. Se um motor feito do zero pode superar uma década de robustez do RocksDB é uma questão em aberto na engenharia de validadores.정직 메모: Jump Crypto의 Firedancer는 RocksDB를 완전히 버리고 전용 저장소를 씁니다. 하이브리드 Frankendancer는 여전히 Agave의 RocksDB Blockstore를 씁니다. 밑바닥부터 만든 엔진이 10년간 다져진 RocksDB를 이길 수 있을지는 검증자 엔지니어링에서 아직 열린 질문입니다.
05 · あゆみと使いどころJourney & when not toTrayectoria y cuándo noTrajetória e quando não발자취와 쓰지 말아야 할 때

13年の歩みと、選ぶ・選ばない13 years — and when to say no13 años, y cuándo decir que no13 anos — e quando dizer não13년 — 그리고 아니라고 말할 때

最後に、ここまでの歩みを一望し、「自分の仕事にRocksDBは合うか?」を確かめます。万能ではありません。形の合う仕事に、意図して選ぶ部品です。 Finally, a look back at the journey — and a check: is RocksDB right for your job? It's not universal. It's a part you choose deliberately, for work of the right shape.Por último, una mirada atrás al camino, y una comprobación: ¿es RocksDB adecuado para tu trabajo? No es universal. Es una pieza que se elige a conciencia, para trabajos con la forma adecuada.Por fim, um olhar para trás na jornada — e uma verificação: o RocksDB é certo para o seu trabalho? Ele não é universal. É uma peça que se escolhe deliberadamente, para trabalhos com o formato certo.끝으로 지나온 길을 돌아보고 — 확인해 봅시다: RocksDB가 당신의 일에 맞을까요? 만능이 아닙니다. 형태가 맞는 일에 의도적으로 고르는 부품입니다.

DEMO

RocksDB のあゆみThe RocksDB timelineLa cronología de RocksDBA linha do tempo do RocksDBRocksDB 연표

👆 年をタップすると、その出来事が一言で分かりますtap a year for a one-line notetoca un año para una nota de una líneatoque num ano para uma nota de uma linha연도를 누르면 한 줄 설명이 나옵니다
DEMO

使いどころ判定 — あなたの仕事に合う?Fit check — is it right for your job?Comprobación de encaje: ¿va con tu trabajo?Verificação de encaixe — serve para o seu trabalho?궁합 진단 — 당신의 일에 맞을까?

いちばん近いワークロードを選んでみてください。 Pick the workload that's closest to yours.Elige la carga de trabajo más parecida a la tuya.Escolha a carga de trabalho mais próxima da sua.가장 가까운 워크로드를 골라 보세요.

👆 選ぶと、ここに判定が出ますpick one to see the verdictelige uno para ver el veredictoescolha um para ver o veredito하나를 고르면 판정이 나옵니다

得意なこと・苦手なことStrengths & weaknessesFortalezas y debilidadesForças e fraquezas강점과 약점

得意(選ぶべき)Great fitEncaje perfectoEncaixe ótimo딱 맞음

✍️書き込みが多い・追記が多いWrite-heavy, append-mostlyMucha escritura, casi todo anexadoMuita escrita, quase só anexação쓰기 많음, 대부분 추가 — LSMの本領— what LSM is for— para lo que sirve el LSM— para o que a LSM serve— LSM의 본령
🔑ポイント検索・狭い範囲スキャンPoint lookups & tight range scansBúsquedas puntuales y escaneos de rango cortosBuscas pontuais e varreduras de faixa curtas포인트 조회와 좁은 범위 스캔 — キー順で速い— sorted keys— claves ordenadas— chaves ordenadas— 정렬된 키
ローカルディスクで生の速度Raw speed on local diskVelocidad bruta en disco localVelocidade bruta no disco local로컬 디스크에서의 순수 속도 — 網の往復なし— no network hop— sin salto de red— sem salto de rede— 네트워크 왕복 없음
🧩アプリに組み込みたいEmbed inside an appEmbeber dentro de una appEmbutir dentro de um app앱 안에 임베드 — サーバー不要— no server— sin servidor— sem servidor— 서버 불필요

⚠️ 苦手(別ツール/自作)Wrong toolHerramienta equivocadaFerramenta errada맞지 않는 도구

📊大規模な分析(OLAP)Large-scale analyticsAnalítica a gran escalaAnálise em larga escala대규모 분석 — 列指向(ClickHouse等)が有利— columnar (ClickHouse) wins— gana lo columnar (ClickHouse)— vence o colunar (ClickHouse)— 컬럼형(ClickHouse)이 유리
🌐複製・シャーディング・SQL・認可Replication, sharding, SQL, authReplicación, sharding, SQL, autenticaciónReplicação, sharding, SQL, autenticação복제, 샤딩, SQL, 인증 — ライブラリなので自作— it's a library; you build these— es una biblioteca; esto lo construyes tú— é uma biblioteca; isto você constrói— 라이브러리이므로 직접 구축
🐢読み取り遅延が最優先の混在Read-latency-first mixed loadsCargas mixtas con la latencia de lectura como prioridadCargas mistas com a latência de leitura em primeiro읽기 지연 우선의 혼합 부하 — B-treeが有利なことも— a B-tree may win— puede ganar un árbol B— uma árvore B pode vencer— B 트리가 유리할 수도
🎛️チューニングを避けたいWant to avoid tuningQuieres evitar el ajuste finoQuer evitar ajustes튜닝을 피하고 싶음 — 既定が最適なことは稀— defaults are rarely optimal— los valores por defecto rara vez son óptimos— os padrões raramente são ótimos— 기본값이 최적인 경우는 드묾
🗿

RocksDBは「万能」ではなく、「形の合う仕事に選ぶ」部品。 RocksDB isn't universal — it's a part you choose for the right-shaped jobRocksDB no es universal: es una pieza que eliges para el trabajo con la forma adecuadaO RocksDB não é universal — é uma peça que você escolhe para o trabalho com o formato certoRocksDB는 만능이 아니라 — 형태가 맞는 일에 고르는 부품입니다 書き込みを速くする代わりに読み取りは探索(第2章)、増幅はトレードオフ(第3章)、運用機能は自作(この章)。それでも用途が合えば、Kafkaから Solana まで世界の足元を支えます。おつかれさまでした! Fast writes at the cost of search on reads (ch.2), amplification trade-offs (ch.3), operations you build yourself (this ch.). When the shape fits, it holds up the world from Kafka to Solana. Thanks for reading!Escrituras rápidas a cambio de búsqueda en las lecturas (cap.2), compromisos de amplificación (cap.3) y operaciones que construyes tú (este cap.). Cuando la forma encaja, sostiene el mundo desde Kafka hasta Solana. ¡Gracias por leer!Escritas rápidas ao custo de busca nas leituras (cap.2), compromissos de amplificação (cap.3) e operações que você mesmo constrói (este cap.). Quando o formato encaixa, ele sustenta o mundo de Kafka a Solana. Obrigado por ler!읽기에서의 탐색을 대가로 한 빠른 쓰기(2장), 증폭의 트레이드오프(3장), 직접 얹는 운영 기능(이 장). 형태가 맞으면 Kafka부터 Solana까지 세상의 밑을 떠받칩니다. 읽어 주셔서 감사합니다!