MongoDBは米国時間4月24日、モバイル機器向けに最適化した軽量の埋め込み型データベースを手がけるRealmを買収することで合意したと発表した。2010~2014年にかけて開発され、2017年に商用版がリリースされた「Realm」は、オブジェクトベースの埋め込み型データベースであり、およそ20年という歴史を持つ「SQLite」の代替としてしばしば位置付けられている。
今回の買収の背景として、「MongoDB」はモバイルアプリケーションのバックエンドとして用いられることが多い一方、モバイル機器への組み込みに適したコンパクトなバージョンがないという点がある。Realmは、10万人以上の開発者が活発に利用している人気のプラットフォームとなっている。
Realmは、APIを提供することで開発者が好きな言語でロジックを開発できるようにしつつ、カーネル部分をC++で構築することで高性能を追求しているコンパクトなデータベースエンジンだ。また、このデータベースは「Realm」と呼ばれるコンパクトなコンテナ内にカプセル化されている。Realmは、「~ではない」という表現でその特長が語られるデータベースだ。Realmは、テーブル内のデータオブジェクトが均一な型ではないという点で、リレーショナル(関係型)なテーブルではない。そして同様に、各オブジェクト内に明確なスキーマを有しているという点で、ドキュメントストアやキーバリューストア(KVS)ではない。
データは、チェンジフィードやメモリーマップを通じてアップデートできる「ライブオブジェクト」として維持されるため、コードから直接ストレージに書き込め、バックエンドサーバーとの同期の際にデータのレプリケーションは発生しない。その際にサーバーは、Change Data Capture(CDC)フィードのようなアップデートをプッシュする。バックエンドはイベントハンドラーや、ビジネスロジック、企業システムに対するコネクターとして実装される。また、「PostgreSQL」や「Microsoft SQL Server」用のビルド済みコネクターのほか、Node.js用やC#用のサーバSDKや、(REST APIを置換するものとしての)「GraphQL API」が用意されている。
上述したようにRealmはSQLiteとよく比較される。Realmのベンチマークを信じると、その速度は平均で10倍に達するという。RealmはSQLベースではなく、オブジェクトベースのデータベースであり、外部キーの取り扱いが不要であるため、テーブル設計が容易である。しかし、より簡潔なオブジェクトベースのデータベースであるがゆえに、データの自動インクリメントといったより複雑な関数の定義や、クラスやフィールドの命名(厳格な文字制限が存在する)、異なるスレッドをまたがったRealmデータオブジェクトの取り扱いに対するサポートの欠如といった制約が存在している。
MongoDBはRealmに関する計画を、6月の年次ユーザーカンファレンスで披露する予定だ。
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。