Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
これは分散KVS? NoSQL? NewSQL? 謎の HarperDBにせまる
Search
jyoshise
December 13, 2022
Technology
0
540
これは分散KVS? NoSQL? NewSQL? 謎の HarperDBにせまる
Cloud Native Database Meetup #5 のLT資料です。
jyoshise
December 13, 2022
Tweet
Share
More Decks by jyoshise
See All by jyoshise
AIがコード書きすぎ問題にはAIで立ち向かえ
jyoshise
4
1.6k
Nutanix Kubernetes PlatformでLLMを動かす話
jyoshise
0
400
CNDT2023_Nutanix_jyoshise
jyoshise
0
420
クラウドネイティブインフラおじさんがNutanixに入社することになったので以下略
jyoshise
0
1.1k
全てがクラウドネイティブで良いのか。その謎を明らかにすべく我々はエンプラの奥地に向かった
jyoshise
8
5.7k
Kubeadmによるクラスタアップグレード・その光と闇
jyoshise
3
4.7k
Kubernetes Meetup Tokyo #26 / Recap: Kubecon Keynote by Walmart
jyoshise
6
3.3k
Kubernetes Meetup Tokyo #20 / KubeCon Recap: Tekton
jyoshise
0
150
KubeCon Recap: Keynote-Airbnb
jyoshise
1
2.1k
Other Decks in Technology
See All in Technology
Terraformで構築する セルフサービス型データプラットフォーム / terraform-self-service-data-platform
pei0804
1
210
新規プロダクトでプロトタイプから正式リリースまでNext.jsで開発したリアル
kawanoriku0
1
720
サラリーマンの小遣いで作るtoCサービス - Cloudflare Workersでスケールする開発戦略
shinaps
2
480
Autonomous Database - Dedicated 技術詳細 / adb-d_technical_detail_jp
oracle4engineer
PRO
4
10k
【NoMapsTECH 2025】AI Edge Computing Workshop
akit37
0
430
IoT x エッジAI - リアルタイ ムAI活用のPoCを今すぐ始め る方法 -
niizawat
0
150
LLM時代のパフォーマンスチューニング:MongoDB運用で試したコンテキスト活用の工夫
ishikawa_pro
0
180
新アイテムをどう使っていくか?みんなであーだこーだ言ってみよう / 20250911-rpi-jam-tokyo
akkiesoft
0
400
「全員プロダクトマネージャー」を実現する、Cursorによる仕様検討の自動運転
applism118
22
12k
「どこから読む?」コードとカルチャーに最速で馴染むための実践ガイド
zozotech
PRO
0
590
Snowflake×dbtを用いたテレシーのデータ基盤のこれまでとこれから
sagara
0
170
Aurora DSQLはサーバーレスアーキテクチャの常識を変えるのか
iwatatomoya
1
1.2k
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
Unsuck your backbone
ammeep
671
58k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
188
55k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
Statistics for Hackers
jakevdp
799
220k
How STYLIGHT went responsive
nonsquared
100
5.8k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Why Our Code Smells
bkeepers
PRO
339
57k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Thoughts on Productivity
jonyablonski
70
4.8k
The Invisible Side of Design
smashingmag
301
51k
Transcript
@jyoshise これは分散KVS? NOSQL? NEWSQL? 謎の HARPERDBにせまる
None
3
4 • LMDB (Lightning Memory-Mapped Database) とは: • もともとはOpenLDAPプロジェクトのために作られたOSS •
CloudflareがDNS用のデータストアとして使っていたりとか • Memory-mapped fileを使用 • 軽量 • 高速 • ACID準拠 • 読み出しと書き込みに高度に最適化された追記型B+tree構造 • トランザクションをサポート • 書き込みロック処理→デッドロックは発生しない • Full MVCC→ReaderとWriterは競合しない • Dup-sorted keys UNDERLYING STORAGE MECHANISM OF HARPERDB: LMDB
5 • JSONやSQLでデータを取り込み、1つの データスキーマに格納できるようにしたい。 • マルチモデルデータベースでよくある、1つ のデータベース内でモデル間でデータが重複 してしまうという問題を解決する • Same
data set • Common services/core operation • No data duplication for different models • SQL, NoSQL, CSV, etc… all talking to HarperDB core and same data set OPERATIONAL MODEL
6
7 • テーブルを作成するときはハッシュAttribute名(Primary key)を定義するだけでよい • 各テーブルはディスク上に1つのデータファイル(.mdb)であり、すべてのインデックス はデータファイル内の「サブデータベース」 • データ書き込み(挿入、更新、削除)は「マイクロバッチ処理」とし、トランザクション の一括実行を可能にすることで、より高いパフォーマンスを実現
STORAGE HIERARCHY
8 • コア数 • インストールされたインスタンスで利用可能なコア数に合わせてスケール可能 –Raspberry Pi から大規模ベアメタルサーバーまで –大規模環境ではHarperDBを並列プロセスで実行 •
プロセス数=利用可能なコアの数 • ディスク • ストレージは無制限→テーブルはインスタンスのストレージの利用可能な容量まで成長 SCALING WITH HARDWARE
9 • Read/Write Optimized • 1ノードあたり毎秒20Kの書き込みが可能 • 読み込みと書き込みが独立したノンブロッキングのグローバルレプリケーション(MVCC)を110msで実行できる • High
Throughput • HarperDB 1ノードで120Kリクエスト/秒の処理能力 • Storage Engine • ACID準拠 • Attributesはuniversally indexed by default →効率的な格納と検索が可能 PERFORMANCE & BENCHMARKS
10
11
12
13 • 各ノードはトランザクションとストレージをACIDに他のノードから独立して処理 • 各ノードは、他のノードに接続し、任意のテーブルに対してトランザクションを送受信で きる • スキーマメタデータとトランザクションを、定義されたトポロジーに基づき決定論的にリ アルタイムで送信 •
すべてのノードがネットワークやサーバーの停止からキャッチアップでき、”dead on the floor”トランザクションは発生しない • 一貫性を保つためにタイムスタンプを利用→更新のシナリオでは最新のトランザクション を優先(古い更新があった場合、それは破棄される) • 再接続シナリオでは、HarperDBノードは自動的にオフラインだった時間分のキャッチアッ プペイロードを要求し、送信 HARPERDB: DISTRIBUTED COMPUTE & STORAGE
14
15 HarperDBは • むちゃくちゃ速い(らしい) • DB設計をほとんど考えなくてよいので楽 • CSVなりJSONなりでデータをぶっこめばインデックスしてくれて、あとはSQLで 読み書きできる •
Geo distributionはConsistencyの点でまだ開発途上のようだが、読み書き性能を優先す る用途には使えそう • クラウドのDBaaSもあるのでとっつきやすい • https://harperdb.io/ • 小さいインスタンスなら無料でお試しできます • オンプレにデプロイしてクラウドで管理もできる まとめ