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
500
これは分散KVS? NoSQL? NewSQL? 謎の HarperDBにせまる
Cloud Native Database Meetup #5 のLT資料です。
jyoshise
December 13, 2022
Tweet
Share
More Decks by jyoshise
See All by jyoshise
Nutanix Kubernetes PlatformでLLMを動かす話
jyoshise
0
340
CNDT2023_Nutanix_jyoshise
jyoshise
0
380
クラウドネイティブインフラおじさんがNutanixに入社することになったので以下略
jyoshise
0
940
全てがクラウドネイティブで良いのか。その謎を明らかにすべく我々はエンプラの奥地に向かった
jyoshise
6
5.2k
Kubeadmによるクラスタアップグレード・その光と闇
jyoshise
3
4.5k
Kubernetes Meetup Tokyo #26 / Recap: Kubecon Keynote by Walmart
jyoshise
6
3.2k
Kubernetes Meetup Tokyo #20 / KubeCon Recap: Tekton
jyoshise
0
130
KubeCon Recap: Keynote-Airbnb
jyoshise
1
2k
エンタープライズコンテナプラットフォーム、どれがええねん
jyoshise
19
4k
Other Decks in Technology
See All in Technology
『衛星データ利用の方々にとって近いようで触れる機会のなさそうな小話 ~ 衛星搭載ソフトウェアと衛星運用ソフトウェア (実物) を動かしながらわいわいする編 ~』 @日本衛星データコミニティ勉強会
meltingrabbit
0
150
リーダブルテストコード 〜メンテナンスしやすい テストコードを作成する方法を考える〜 #DevSumi #DevSumiB / Readable test code
nihonbuson
11
7.3k
Building Products in the LLM Era
ymatsuwitter
10
5.5k
トラシューアニマルになろう ~開発者だからこそできる、安定したサービス作りの秘訣~
jacopen
2
2k
プロダクトエンジニア構想を立ち上げ、プロダクト志向な組織への成長を続けている話 / grow into a product-oriented organization
hiro_torii
1
210
SA Night #2 FinatextのSA思想/SA Night #2 Finatext session
satoshiimai
1
140
データの品質が低いと何が困るのか
kzykmyzw
6
1.1k
2025-02-21 ゆるSRE勉強会 Enhancing SRE Using AI
yoshiiryo1
1
360
2/18/25: Java meets AI: Build LLM-Powered Apps with LangChain4j
edeandrea
PRO
0
120
明日からできる!技術的負債の返済を加速するための実践ガイド~『ホットペッパービューティー』の事例をもとに~
recruitengineers
PRO
3
410
スタートアップ1人目QAエンジニアが QAチームを立ち上げ、“個”からチーム、 そして“組織”に成長するまで / How to set up QA team at reiwatravel
mii3king
2
1.5k
(機械学習システムでも) SLO から始める信頼性構築 - ゆる SRE#9 2025/02/21
daigo0927
0
130
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
Embracing the Ebb and Flow
colly
84
4.6k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.6k
GraphQLとの向き合い方2022年版
quramy
44
13k
Rebuilding a faster, lazier Slack
samanthasiow
80
8.8k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
174
51k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Thoughts on Productivity
jonyablonski
69
4.5k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
KATA
mclloyd
29
14k
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/ • 小さいインスタンスなら無料でお試しできます • オンプレにデプロイしてクラウドで管理もできる まとめ