# HG changeset patch # User Kazuma Takeda # Date 1486612504 -32400 # Node ID ea34058cb43807bc71676b74a3f1a6662ec5641b # Parent d129603159925becd7229b7d16031e7af056bbc3 Update first Chapter. diff -r d12960315992 -r ea34058cb438 paper/main.pdf Binary file paper/main.pdf has changed diff -r d12960315992 -r ea34058cb438 paper/main.tex --- a/paper/main.tex Thu Feb 09 03:32:40 2017 +0900 +++ b/paper/main.tex Thu Feb 09 12:55:04 2017 +0900 @@ -78,39 +78,44 @@ % 1章では研究目的を書かない(もったいない) \chapter{ゲームエンジンにおけるデータベース} -この章ではデータベースのあり方と問題点を提議する。 +この章ではデータベースの種類であるRelational DatabaseとNoSQLについて述べる。 -\section{インピーダンスミスマッチ} - -プログラムからデータを分離して扱うデータベースには、 -プログラム中のデータ構造とRDBの表構造のズレによりインピーダンスミスマッチという問題がある。 +\section{Relational Database} -例えばRPGゲーム中のユーザが持つアイテムという単純なものでも、RDBではユーザとアイテムの組をキーとする巨大な表として管理することになる。 -% ネストを許さないのは第一正規形だけ -プログラム中では、ユーザが持つアイテムリストという簡単な構造を持つが、第一正規形を要求するRDBではネスト構造を許さない。 +Relational Database(RDB)は、列と行からなる2次元のテーブルにより実装されるデータベースである。 +データ型として文字列、数値、日付、Bool型がある。 +RDBはスキーマの決まったデータを扱うことを長所としている。 -ORMapperではデータベースのレコードをプログラム中のオブジェクトにマッピングし扱うことができる。 -オブジェクトに対する操作を行うとORMapperがSQLを発行し、処理を行ってくれる。 +RDBは主として使われているデータベースであるが、苦手としている事がある。 -しかしレコードをプログラム中のオブジェクトを対応させるORMapperの技術でインピーダンスミスマッチの本質的な部分を解決することはできない。 +それは、スキーマレスなデータの扱いやマシン台数を増やし処理速度を上げることである。 +% これは必要か?みたいなお話 +水平分割や垂直分割によりデータを分割できるが構造としては複雑化していく。 \section{NoSQL} -NoSQLはSQLを必要としない非リレーショナル型のデータベースである。 +NoSQLはNot Only SQLの略で、SQLを必要としない非リレーショナル型のデータベースである。 -JsonやXMLを扱えるデータベースでは通常スキームを必要としないため、特に設計を行わずデータを格納することができる。 +JsonやXMLを扱えるデータベースでは通常スキームを必要としないため、特に扱うデータの型が決まっていなくても使うことができる。 しかし、不定形の構造の変更をトランザクションとして、Jsonの一括変更という形で処理されてしまっており、並列アプリケーションには向いていない。 \section{Jungleの提案} -当研究室ではデータの変更の際に過去の木構造を保存するデータベースのJungleを提案している\cite{1}。 + +非破壊的木構造データベースのJungleを提案している\cite{1}。 +Jungleはスケーラビリティのあるデータベースとして開発している。 + +ウェブサイトの構造は大体が木構造であるため、データ構造として木構造を採用している。 +しかし、ウェブサイトだけでなくゲームにおいてもデータ構造が木構造になっている。 本研究ではJungleをUnityを用いたゲームで使用する方法を提案する。 -データベースとしてJungle DatabaseをC\#で再実装を行い、Unity向けに組み込みを行う。 +データベースとしてJungle Databaseを採用する。 +JungleはJavaとHaskellによりそれぞれの言語で開発されている。 +本研究で扱うのはJava版をC\#で再実装したものである。 \chapter{Jungle Database の概念} -本章ではJungle Databaseの構造とAPIについて記述する。 +本章ではまずはJungle Databaseの概念と構造について記述する。 \section{木構造データベースJungle} @@ -286,6 +291,21 @@ ゲームのセーブデータ ネットワーク上で使用するデータ +\section{ゲームデータとデータベース} + +ゲームのデータベースとして長年使われているのがRDBである。 + +プログラム中のデータ構造とRDBの表構造のズレによりインピーダンスミスマッチという問題がある。 + +例えばRPGゲーム中のユーザが持つアイテムという単純なものでも、RDBではユーザとアイテムの組をキーとする巨大な表として管理することになる。 +% ネストを許さないのは第一正規形だけ +プログラム中では、ユーザが持つアイテムリストという簡単な構造を持つが、第一正規形を要求するRDBではネスト構造を許さない。 + +ORMapperではデータベースのレコードをプログラム中のオブジェクトにマッピングし扱うことができる。 +オブジェクトに対する操作を行うとORMapperがSQLを発行し、処理を行ってくれる。 + +しかしレコードをプログラム中のオブジェクトを対応させるORMapperの技術でインピーダンスミスマッチの本質的な部分を解決することはできない。 + \section{UnityとJungleの関係} Unityは3Dゲームエンジンで、ゲームを構成する要素(Object)をC\#で制御する。