title: ゲームエンジンにおけるJungleDatabaseの提案 author: Kazuma Takeda profile: lang: Japanese code-engine: coderay # この発表では - RDBとNoSQL - Jungle Databseの提案 - Jungleの仕様 - ゲームのデータ構造 - Jungle-Sharpの実装 - 例題ゲームの実装 - Jungle-Sharpの改良点 # RDBとNoSQL Relational Databseと呼ばれるRDBは行と列からなる2次元のテーブルにより実装されているデータベース。 データ型として文字列や数値、日付、Bool型がある。 データの一貫性を重視しているRDBでは分散システムには向いていない。 NoSQL(Not Only SQL) Databaseと呼ばれる非リレーショナル型のデータベース。 スキームを持たないため、扱うデータの型を気にしなくてもよい。 一貫性を一部犠牲にしているNoSQLでは分散させることが可能である。 CassandraやMongoDBなどが例に挙げられる。 # Jungle Databaseの提案 Jungleは過去の変更データを保存しつつ新しい木を構築してく木構造(非破壊構造)の手法をとる。 非破壊にすることにより、データを読み出す側と書き込む側のデータを安全に扱うことができる。 ノード自身にはKey-Valueのデータを格納することができる。 これはデータベースのレコードに相当する。 Jungleのトランザクションはルートから変更を行うノードまでコピーを行い、新しく木構造を構築する。 最後にルートをアトミックに入れ替えてコミットする。 コミットが失敗した場合は最初からやり直す。 これにより、原子性を実現する。 Jungleはcommit logを持ち、それを他のノードやディスクに転送することにより、 分散構成と永続性を実現する。 # JungleのDatabase Jungleの構造としては以下の図のようになっている。