1 / 9

Tokyo Cabinet の歴史

Tokyo Cabinet の歴史. 前史. 全文検索システム Snatcher C で書いた Namazu 、スニペット付き GDBM をベースとした転置インデックス 軽量データベースライブラリ QDBM CAT ( append )モードと B+ 木対応の GDBM 全文検索システム Estraier QDBM をベースとした Snatcher 全文検索システム Hyper Estraier 文字 N-gram 索引方式の Estraier 未踏(休職)→転職. 登場. mixi の検索機能 外部システムから HE ベースに置き換え

aradia
Download Presentation

Tokyo Cabinet の歴史

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tokyo Cabinetの歴史

  2. 前史 • 全文検索システムSnatcher • Cで書いたNamazu、スニペット付き • GDBMをベースとした転置インデックス • 軽量データベースライブラリQDBM • CAT(append)モードとB+木対応のGDBM • 全文検索システムEstraier • QDBMをベースとしたSnatcher • 全文検索システムHyper Estraier • 文字N-gram索引方式のEstraier • 未踏(休職)→転職

  3. 登場 • mixiの検索機能 • 外部システムからHEベースに置き換え • でもこの成長ペースだと早晩破綻するのは必須 • Tokyo Cabinet • モダンなQDBM • C99、Pthread、mmap、pread/pwrite、etc... • Win32互換を破棄 • でも、検索機能にはあんまり使ってない • HEからTokyo Dystopiaに置き換えた部分もある • 主にデータマイニングで利用

  4. ハッシュデータベース • static hashingによる単純化 • Berkeley DB等はdynamic hashing • データフォーマットの効率化 • BER圧縮、アラインメントとビットシフト • フリーブロックプール • ベストフィットアロケーション • 並列化 • レコード単位のrwlock • mmap • メモリに乗る範囲はmmap、それ以外はpread/pwrite

  5. B+木データベース • ページキャッシュとB木索引 • 各ノードをハッシュDBのレコードに割り当て • LRU削除キャッシュ • 多機能 • 順序を維持。カスタム比較関数 • 範囲検索、カーソル • トリック • 格納時にページ単位で圧縮可能 • 投機的探索=直前に使ったリーフをまず見る • 並列性は全体のrwlock

  6. その他 • オンメモリデータベース • 順序ハッシュ → B+木DBのページキャッシュ • スプレー木 → 転置インデックスのキャッシュ • 固定長配列データベース • mmapでファイル上に割り当てた配列 • テーブルデータベース • レコードに複数のコラム。スキーマ不要 • クエリオブジェクト。クエリ言語は不要。 • 各種バインディング • Perl、Ruby、Java、Lua、Python、PHP、Scheme、etc...

  7. Tokyo Tyrant • TCのネットワーク対応 • ローカルのマルチプロセスでもDB共有に利用 • 並列化 • スレッドプールモデル • epoll/kqueue/eventports利用 • 各種プロトコル対応 • 独自バイナリ、memcached互換、HTTP互換 • 抽象データベース • MDB/NDB/HDB/BDB/FDB/TDBの一挙対応 • TDB専用テーブル拡張API

  8. 今ここ • TCの改善 • フリーブロックプールを早くしたい • B+木をページ単位ロックにしたい • ユーティリティ • リアルタイム検索サーバ • 永続的かつ時限的なストレージ • mixi • PVが殺到する検索機能は、TD+独自実装+SSDに • そうでない検索機能は、Triton+SSDに • テキストマイニングとグラフマイニングのミドルウェア化

  9. これから(妄想) • 並列分散処理の時代? • TC/TTは、1台あたりのスループットを最大化する技術 • プログラマがいれば、1台でできることって実は結構多い • 1台あたりのコア数もメモリ量もストレージ速度もどんどん向上 • 実際は1台で済むような処理しかしていない組織も多い • 問題領域を限定したミドルウェア化 • 「クラウド」よりも安価なパッケージ商売 • key/valueを超えて • はじめからテーブルDBに最適化したライブラリ • MySQLとかのストレージエンジン?

More Related