annotate introduciton.tex @ 14:e4da23b04260

commit
author tatsuki
date Wed, 08 Feb 2017 17:26:22 +0900
parents 7acd7d5afeb6
children 33d8077a5d45
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14
tatsuki
parents: 13
diff changeset
1 \chapter{ソフトウェア内部で使用するのに適した 木構造データベース Jungle}
1
tatsuki
parents:
diff changeset
2 \pagenumbering{arabic}
14
tatsuki
parents: 13
diff changeset
3 \section{研究目的}
3
tatsuki
parents: 1
diff changeset
4 プログラムからデータを分離して扱うデータベースには、
6
tatsuki
parents: 5
diff changeset
5 プログラム中のデータ構造と Relational DataBase(RDB) の表構造のインピーダンスミスマッチという問題がある。
3
tatsuki
parents: 1
diff changeset
6 データベースのレコードをプログラム中のオブジェクトとして使えるOR Mapperや、
tatsuki
parents: 1
diff changeset
7 データベース自体も、表に特化したKey Value Store、Jsonなどの不定形のデータ構造を格納するように機能拡張されてきている。
tatsuki
parents: 1
diff changeset
8 しかし、プログラム中のデータは複雑な構造をメモリ上に構築しており、これらの方法でもまだギャップがある。
tatsuki
parents: 1
diff changeset
9
6
tatsuki
parents: 5
diff changeset
10 そこで当研究室では、煩雑な設計を行わず、プログラム内部に木構造を格納できるデータベースJungleを提案している。
3
tatsuki
parents: 1
diff changeset
11 また、Jungleは、木構造の変更を非破壊的、つまり、元の木を保存しつつ、新しい木を構築する方法を取り、
tatsuki
parents: 1
diff changeset
12 木のルートをアトミックに入れ替えることでトランザクションを実現する。
tatsuki
parents: 1
diff changeset
13 プログラムは、この木を内部のデータ構造として直接取り扱うことができるので、読み出し時にデータベースに問い合わせる必要がない。
tatsuki
parents: 1
diff changeset
14 Jungleは分散構成も可能である。
tatsuki
parents: 1
diff changeset
15
11
tatsuki
parents: 6
diff changeset
16 Jungleは、読み込みは高速に行える反面、書き込みは木の形に依存しており、最悪の場合O(n)となってしまう。
tatsuki
parents: 6
diff changeset
17 また、Indexの構築も大幅なネックとなっていた。
13
tatsuki
parents: 11
diff changeset
18 そこで、本研究では、Jungleの木の構築・編集機能の改善を行う。
1
tatsuki
parents:
diff changeset
19
6
tatsuki
parents: 5
diff changeset
20 その後、実際にJungleを使用したアプリケーションを開発・運用する。
tatsuki
parents: 5
diff changeset
21
tatsuki
parents: 5
diff changeset
22
14
tatsuki
parents: 13
diff changeset
23 \section{インピータンスミスマッチ}
tatsuki
parents: 13
diff changeset
24 インピータンスミスマッチとは、プログラム中のデータ構造とRDBの表構造の間に生まれるギャップのことである。
tatsuki
parents: 13
diff changeset
25 例えばRPGゲーム中のユーザが持つアイテムという単純なものでも、RDBではユーザとアイテムの組をキーとする巨大な表として管理することになる。
tatsuki
parents: 13
diff changeset
26 プログラム中では、ユーザが持つアイテムリストという簡単な構造を持つが、データのネスト構造を許さない第一正規形を要求するRDBとは相容れない。
tatsuki
parents: 13
diff changeset
27 レコードをプログラム中のオブジェクトに対応させるOR Mapperという技術では、これを本質的には解決することはできない。
tatsuki
parents: 13
diff changeset
28 そこで、 MySQLやPosgreSQLなどは、Jsonなどの不定形のデータ構造を格納するように機能拡張されるようになってきた。
tatsuki
parents: 13
diff changeset
29 しかし、不定形の構造の変更をトランザクションとして、どのように処理するかはJsonの一括変更という形で処理されてしまっており、
tatsuki
parents: 13
diff changeset
30 並列処理が中心となってきている今のアプリケーションには向いているとは言えない。つまり、この拡張はRDBよりの拡張であり、
tatsuki
parents: 13
diff changeset
31 並列処理を含むプログラミングからの要請とのミスマッチが残っている
tatsuki
parents: 13
diff changeset
32
1
tatsuki
parents:
diff changeset
33
tatsuki
parents:
diff changeset
34 \section{本論文の構成}
14
tatsuki
parents: 13
diff changeset
35 本論文では、初めに既存のデータベースについて記述する。
3
tatsuki
parents: 1
diff changeset
36 第 3 章では、Jungleの基本的な機能・APIについて記述する。
6
tatsuki
parents: 5
diff changeset
37 第 4 章では、改良後のIndexの実装に使用する非破壊 TreeMap の実装について記述する。
3
tatsuki
parents: 1
diff changeset
38 第 5 章では、Indexの差分 Update の実装について記述する。
tatsuki
parents: 1
diff changeset
39 第 6 章では、線形の木を、正順でO(1)で構築することが可能な、Differential Jungle Tree の実装について記述する。
tatsuki
parents: 1
diff changeset
40 第 7 章では、自身が Index としての機能を持つ、 Red Black Jungle Treeの実装について記述する。
tatsuki
parents: 1
diff changeset
41 第 8 章では、実際に Jungle を使用した、例題アプリケーションの実装について記述する。
tatsuki
parents: 1
diff changeset
42 第 9 章では、今回実装した機能の測定について記述する。