高性能なKey Value Store、SplinterDBとvSAN 8への適用
今回は、VMware Office of the CTO (OCTO)がオープンソースで開発を進めているKey Value Store (KVS)の一つであるSplinterDBと、この技術のvSAN 8への適用について紹介をしようと思います。 Key Value Storeというと、すでにredis、etcd、RocksDBなど、たくさんの実装が存在しており広く使われています。そのような状況の中で、なぜ、新たなKey Value Store技術を開発しているのか疑問に思われる方もおられると思います。これには近年のコンピュータシステムの進化の流れに深く関係しています。 一般的にコンピュータシステムはCPU、メモリ、ストレージ、ネットワークなど、複数のハードウェアコンポーネントから構成されています。これらの中でKey Value Storeの性能と関連が深いCPUとストレージに注目してみましょう。ストレージ技術の進化は着実に進んでいます。HDD->SSD->NVMe/SSDと高速化が進んでいます。一方、CPU単体の性能は、かつてほどの急激な進化は見られなくなっていて、ムーアの法則はもはや成り立たなくなったとも言われています(この記事を書いている最中に、ムーアの法則を提唱したゴードン・ムーア氏が亡くなられました。ご冥福をお祈りいたします)。しかし、CPUのコア数やスレッド数は順調に増えており、並列性で性能を稼ぐことができるようになってきています。 これらのハードウェアの進化のペースを考えると、ストレージの性能を十分に引き出すことができ、CPUに対する負荷が高くなく分散処理ができるようなKey Value Storeがあれば、モダンなコンピュータの性能を最大限に引き出せることができると考えられます。SplinterDBはまさにこのようなところを狙って作られた新しいKey Value Storeです。 SplinterDBはBε-Treeをより進化させたMapped Bε-Treeというデータ構造を基礎にしています。Bε-Treeは従来のB-Treeの各ノードにバッファを設けて、バッファに書き込めるうちはバッファに書き込み、バッファが一杯になった際に子ノードにバッチでフラッシュするようにして、書き込み(insert)の性能向上を実現しています。...