goo blog サービス終了のお知らせ 

まったり アイマス2

アイドルマスター2 超ライトユーザーのプレイ日記

3502. データベース、続き^12

2021年08月27日 | 日記

 データ数が少ない場合は二分探索表、多い場合、あるいは挿入・削除が頻繁な場合は赤黒木で、しかしプログラムから見た操作の関数は同じになります。

 まず、検索は、

 値 = テーブル名(キーワード)

 の形で、キーワードと値は文字列型と考えれば良いです。ダイレクトにこう書けるシステムもありますが、とりあえず概念的なものと考えてください。
 そのテーブル(表)にキーワードが無かった場合、つまり空振りの場合はエラーでは無く、特別な値を返すか、別の特殊変数(大域変数)にエラー値を代入した方が便利です。

 データの挿入は、

 insert(テーブル名(キーワード), 値)

 みたいな感じ。すでにデータがあった場合は、前の値が削除、つまり上書きとなる方が便利と思います。

 削除は、

 delete(テーブル名(キーワード))

 となります。SQLというデータベース操作言語を知っている方は、似たような書き方があるのを覚えていると思います。

 キーワードは大小順に並んでいるので、一つ次と一つ前のキーワードを返す関数が欲しくなります。

 キーワード2 = next(テーブル名(キーワード1))
 キーワード2 = previous(テーブル名(キーワード1))

 このとき、テーブル名(キーワード1)がヒットしなくてもその次に大きい(小さい)キーワードが返ってくると便利です。というか、わざわざ順に並べたのはこれをやりたかった、というのもあります。RDBではデータへのポインタみたいなカーソルと言う概念があって、それを使います。

 ここからは単なるデータ型とデータベースのテーブルの違いで、最大のものはロック機構だと思います。

 lock(テーブル名) または lock(テーブル名(キーワード))
 unlock(テーブル名) または unlock(テーブル名(キーワード))

 ロックについては、微妙にいろいろ種類があるので、調べると面白いです。要するに、あるユーザーが使っている間は別のユーザーは操作できない仕組みが必要です。これをやって初めてデータベースとしての整合性が取れます。

 データベースシステムとしてはテーブルのバックアップと障害復旧の仕組みが必要です。これもシステムによってまちまちだと思います。

 後は通信で、昔はRS-232Cで、今はイーサネットで繋ぐことが多いと思います。リモートで上記の関数が呼べるようにします。この場合、接続先で動作するプログラムが必要で、デーモンと呼ばれます。もちろん、これの管理もデータベースシステムの仕事。ほぼOSと同様の大規模システムになってしまうのは容易に想像できると思います。

 基本的なところはこんなものと思います。後は応用上の取り扱いの話になります。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする