Immutableなデータベースの紹介

はじめに

これはCyberAgent 19新卒 エンジニア Advent Calendar 2018の2日目の記事です。

adventar.org 

 これが初エントリーなので自己紹介を。19卒で株式会社CyberAgentに入社する予定の鈴木光です。現在は株式会社CAmotionというスタートアップでサーバサイドエンジニアとして働いています。別のアルバイト先では設計からフロントまでやってます。

技術的にはPHPRDB設計がメインで最近はVue.jsやGoもやっています。ER図大好き。

趣味ではUnityやUE4でゲームを作ったり、MMDで動画作ったり色々やってます。ちなみにお菓子作りが好きでシフォンケーキを焼くのが得意です。

Immutableなデータベースの紹介

皆さんはデータベース使ってますか?使ってますよね。使ってるはずです。世の中にあるかなりのシステムはデータベースを利用していると思います。データベースには古くから関係データベースが主に利用されてきました。データベースは基本的にCRUD(Create, Read, Update, Delete)操作でデータを制御します。しかし、UpdateやDeleteをしたくないユースケースというのは意外と多いものです。あるいはUpdateするのは良いけどその履歴を取りたい場合などもあります。例えば帳簿データなどはそもそもDeleteされては困ります。ミスタイプなどにより金額や備考などの情報をUpdateするにもその変更履歴を取りたいものです。

しかし、RDBでこれをやろうとすると全く同じような構造のテーブルを2つ作って片方は通常の運用、もう片方は更新がかかるたびに更新前のデータをInsertしていく感じになります。つまり、変更前のデータが欲しい場合はテーブル数が倍増します。こういうユースケースに適したデータベースがあるので紹介します。尚、RDBはありません。

Datomic

DatomicはAWS Marketplaceで提供されているNoSQLデータベースです。Clojureの開発者が開発したということもあり、普遍性というところに重きをおいたアーキテクチャが採用されています。UpdateとDeleteが出来ません。一種の時系列データベースでレコードは全て時系列順になります。特徴的なのはACID特性を保証しているところです。NoSQLはこれを一部破棄することでその性能を担保していますがDatomicはミッションクリティカルなデータにはACIDが必須だと考えており、これが保証されていることでRDBと同じレベルのビジネスロジックを持ち込むことが出来ます。しかもAWS上で展開するのでスケールさせることが可能です。OSSじゃないのが惜しいです。

BigchainDB

BigchainDBはブロックチェーン技術で構築された分散型NoSQLデータベースです。こちらもUpdateとDeleteが出来ません。ブロックチェーン技術によってデータに不変特性を与えており、Tendermintを用いたコンセンサスネットワークを形成することで通常のブロックチェーンデータベースよりも低レイテンシで処理を実行できます。また、ビザンチン故障耐性があったり、アセットを複数転送できたりブロックチェーンデータベースとしては便利な機能がついています。バックエンドにはMongoDBがついているためスケールやレプリケーションも容易に可能です。

時系列データベース

InfluxDBやGorilla、先日発表されたAmazon Timestreamなどのことです。業務などで実際に使われている方も多いのではないでしょうか。特にIoTや行動トラッキング、モニタリングなどに利用されることが多いです。基本的にUpdateとDeleteしか出来ませんが、古いデータを削除するために一括削除のような機能が提供されることがあります。Key-Value型のデータベースが多く、あまり複雑なデータベース設計を持ち込むことが出来ない代わりにそのスループットは非常に目を見張るものがあります。

Amazon Quantum Ledger Database

ちょうど先日のAWS re:Inventで発表されたAWSの台帳型データベースです。財務・会計系システムを対象としているようです。まだプレスリリースなのであまり情報はありませんが、データは追記のみなのに変更履歴が用意に参照できてデータは暗号化されるみたいです。サーバはオートスケールし、一般的なブロックチェーンデータベースより2, 3倍早く、SQLライクなAPIを提供してさらにACID特性まで保証するという、これでもかってくらい欲しい機能がてんこ盛りです。しかも書き込みで$0.70 per 1 million requestsという安さ。これは使うしかありません。 

だいたいこんなものでしょうか。

おわりに

 Twitterはこちらです。色々な技術をキャッチアップしていきたいので気軽に絡んでいただけるとありがたいです。また、CyberAgentの高い技術的リソースをフル活用しながら新規事業開発が出来るCAmotionに興味があるという19内定者の方がいらっしゃったらご連絡下さい。

twitter.com

一日目はCAmotionで働いている同期の記事でした。非常にエモい内容だったので是非読んで頂きたいです。エモすぎてエモエモ。

snowman-mh.hatenablog.com

 明日はAndroidのお話だそうで、あまり触れない分野なので楽しみです。