Mercurial > hg > Papers > 2016 > tatsuki-prosym
view Slide/prosym.md @ 48:cd3da6f21601
add section.
author | Kazuma Takeda |
---|---|
date | Fri, 16 Dec 2016 22:30:25 +0900 |
parents | 5541d77910b9 |
children | a894ba522389 |
line wrap: on
line source
title: ソフトウェア内部で使用するのに適した木構造データベースJungle author: Tatsuki Kanagawa profile: 琉球大学理工学研究科 lang: Japanese code-engine: coderay [](プロシン発表時間 セッション4 1/7 8:50 - 10:10) ## 研究目的 プログラムからデータを分離して扱うデータベースにはデータ構造とRDBの表構造のインピーダンスミスマッチという問題がある。 - ORMapper - Json などにより、不定形のデータ構造を格納できる機能拡張もなされてきたが、複雑な構造をメモリ上に構築しているため、これらの方法でもまだギャップがある。 今回提案する木構造データベースJungleはプログラム内部に直接木構造を構築する。 トランザクションは木のルートをアトミックに入れ替えることで実現する。 また、木構造のデータの変更を非破壊的、つまり元の木を保存しつつ、新しい木を構築する方法を採る。 ## この発表では - Jungleデータベースの構造 - WebServer(BBS) - maTrix - RenderingEngine - まとめ Jungleデータベースの構造とこれを用いたアプリケーション、実装時に発生した問題と解決方法について解説する。 ## Jungleデータベース JungleデータベースはJavaで実装されている。 木構造型のデータベースで、プログラム上に直接木構造を構築する。 木は複数のノードの集合でできており、その木の集合によりJungleが構成されている。 ノードは自身の子のリストと属性名と属性値の組でデータを持つ。これはデータベースのレコードに値する。 通常のレコードと異なるのは、ノードに子どもとなる複数のノードがつくところである。 なお、親から子への片方向の参照しか持たない。 []( 理由はノードをコピーするときにその参照までもコピーしないといけないし、特定のノードから探って行くので子は誰が知る必要はない) []( ノードの図入れた方が良い?) データの変更は一度生成した木を上書きせず、ルートから変更を行うノードまでコピーを行い、新しく木構造を構築する。 その際にルートをアトミックに入れ替える。 [](失敗時の具体的な意味Either) <div style="text-align: center;"> <img src="./images/nonDestractTreeEdit.pdf" alt="message" width="600"> </div> 以降はJungleの構造をAPIとともに紹介。 [](70分あるので入れてもいいかな) ## 木の生成 Jungleは複数の木を名前を利用して管理しており、名前により作成・編集・削除を行う。 Jungleクラスの木の生成、管理を提供するAPIは以下のようになっている。 ``` Java /* If the name of the tree duplicates, it fails and returns null */ JungleTree createNewTree(String treeName); /* If there is no matching Tree name, it fails and returns null */ JungleTree getTreeByName(String treeName); ``` ## 木のノード Jungleの木は、複数のノードの集合でできている。