ホーム » 2020 » 1月 » 06

日別アーカイブ: 2020年1月6日

2020年1月
« 12月   3月 »
 1234
567891011
12131415161718
19202122232425
262728293031  

最近の投稿(電子情報)

アーカイブ

カテゴリー

データベースの物理設計

データベース後半課題

データベース後半の課題は「卒業研究の対象をデータベースとして設計」とする。

情報系の卒研テーマであれば、処理対象のデータの中にはデータベースで管理するのがふさわしい対象について設計せよ。実験系の卒研テーマであれば、実験結果の表をデータベースで管理するとした場合の設計を行うこと。どちらでもない卒研で、卒研のテーマの中にデータベース化すべき対象が無い場合は、身の回りの帳票(例えばコンビニのレシートなど)をデータベース化することを検討すること。

レポートで記載する内容は、以下の通りとする。

  • 卒業研究におけるデータベース化する対象の説明
  • データベースをトップダウン設計する際の
    • 実体と関連を抽出するまでの説明
    • 正規化を行う経過の説明
    • 上記を踏まえたトップダウン設計でのER図
  • データベースをボトムアップ設計する際の
    • 対象とする帳票に相当するデータの一例と説明
    • レベル分けや正規化を行う経過の説明
    • 上記を踏まえたボトムアップ設計でのER図
  • 考察
    • トップダウン設計とボトムアップ設計に違いがあれば、設計の見直しの過程の説明
    • 両設計方法から分かったこと

データベースの物理設計

データベースの物理的設計は、データベースの格納法法や管理方法を決定する。この際には、ディスク容量の見積もりやメモリ量の見積もりが重要となる。

ディスク容量の見積もり

データベースでは、B木(以降で解説予定)などが用いられることが1つのB木のノード(データブロック)の構造をおおまかに示す。各データブロックには、そのブロックを管理するためのページ制御の情報と、実データへのポインタとなるスロット情報と、実データからなる。

実データは、すべてのデータが固定長であれば、そのデータ長とブロック毎のデータ数にページ制御の容量を加えれば良い。しかし、データ長は可変であることが多い。この場合は、データの更新でデータ長が長くなると、その後ろのデータをずらす処理が頻発すると、データ管理の効率が悪い。

そこで、実データの間には、データ長が増えた時の空き領域を設けておく。この比率がPCTFREEと呼ばれ、この領域が埋まった時にのみデータをずらす処理を行う。

また、データベースへのデータの削除を行う場合、データが1つ消える度にデータブロックの構成を変化させると効率が悪く、通常はデータ削除の目印をつけるだけとすることが多い。データ削除で空きがふえた時だけ、データブロックの構成を変えたり、データ追加の際にデータを追加する。この比率は、PCTUSEDと呼ばれる。

このため、ハードディスク容量の見積もりでは、PCTFREE,PCTUSEDを考慮する必要がある。

一般的には、容量を減らす観点であれば、PCTFREEはなるべく小さく、PCTUSEDはなるべく大きい方が望ましいが、データの更新で追加・削除・修正が頻発するのであれば、PCTFREEはある程度大きく、PCTUSEDはある程度小さい方がよい。このため、PCTFREE+PCTUSED < 100 となるようにチューニングすることが多い

また、実際のデータとは別に、データを高速に検索するためのインデックスファイルが作られるので、この容量も別途考慮が必要となる。

補足:残り予定:トランザクション処理, 内部構造, テスト前レポート課題

usacloud

さくらのクラウド上のサーバを、実験・演習用に使っているけど、未使用時に起動していると課金も増えるので、極力電源を落としたい。調べると、さくらのクラウドであれば usacloud という CLI により操作ができるみたい。

同じネタを「機構管理の Azure のサーバでも極力電源を落とせ」と言われているけど、利用者のいるWebサーバなので困難。

APIキーの取得

usacloud の説明を見ているけど、API キーの取得画面の出し方が変更になっているみたい。さくらのクラウドホームにて、APIキーを発行

usacloud のインストール

usacloud のドキュメントには、

curl -fsSL https://releases.usacloud.jp/usacloud/repos/install.sh | bash

と書かれていたけど、debian の apt の GPG エラーでインストールに失敗したので、usacloud_0.31.1-1_all.deb をダウンロードし、dpkg -i *.deb でインストール。

先の手順で作ったAPIキーを登録

[root]# usacloud config
Setting SakuraCloud API Token => 
	Enter token: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Setting SakuraCloud API Secret => 
	Enter secret: xxx...xxx 
Setting SakuraCloud Zone => 
	Enter zone[is1a/is1b/tk1a/tk1v]: is1b
Setting Default Output Type => 
	Enter default-output-type[table/json/yaml/csv/tsv]: json
Written your settings to /root/.usacloud/default/config.json

サーバの操作コマンド

設定が終われば、サーバの起動や停止もコマンド一発

((( サーバの起動 )))
$ sudo usacloud server boot 名前
$ sudo usacloud server wait-for-boot 名前
((( シャットダウン )))
$ sudo usacloud server shutdown 名前
$ sudo usacloud server wait-for-down 名前
((( サーバ一覧 )))
$ sudo usacloud server list
$ sudo usacloud server list -q
11xxxxxxxxxx
$ sudo usacloud server list --output-type table
+--------------+---------+-----+--------+------------+--------------------+--------+----------------+
|      ID      |  Name   | CPU | Memory | Commitment |     IPAddress      | Status |      Host      |
+--------------+---------+-----+--------+------------+--------------------+--------+----------------+
| 11xxxxxxxxxx | nitfcei | 2   | 2048MB | standard   | xxx.xxx.xxx.xxx/24 | up     | sac-xxxx-xxxxx |
+--------------+---------+-----+--------+------------+--------------------+--------+----------------+
$