Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

ITパスポート単語帳 - データベース

データベース 【DB】

複数の主体で共有、利用したり、用途に応じて加工や再利用がしやすいように、一定の形式で作成、管理されたデータの集合のこと。現代では専用の管理システムで構築・運用するデータの集合体を指すことが多い。

コンピュータ上でソフトウェアによって管理され、特定の構造や形式に従って同種のデータ群を蓄積したものを指すことが多い。「データベース」の語は文脈によって、実際に蓄積されたデータの集合体そのものを指す場合と、これを管理する「データベース管理システム」(DBMS:Dababase Management System)を指す場合、両者やデータを利用するアプリケーションソフトなどを含めたシステム全体を指す場合がある。

DBMSは管理者が設定した一定の形式や構造に従ってデータをストレージ装置などに記録・蓄積するシステムで、大量のデータを系統立てて保管することができる。必要に応じて検索、抽出、加工することができるため、企業の情報システムのデータ管理の中核として利用されることが多い。

リレーショナルデータベース

データベースにはデータをどのような構造や方式で格納、管理するかによって様々な種類がある。今日最も一般的に利用されるのは「リレーショナルデータベース」(RDB:Relational Database/関係データベース)と呼ばれるもので、一件のデータを複数の属性の値の組として表現し、組を列挙することでデータを格納していく。属性を列、組を行とする表(テーブル)の形で示されることが多い。

RDBの操作は「SQL」(Structured Query Language)と呼ばれる専用の問い合わせ言語で行われることが多い。命令語と操作対象、条件などを連ねてDBMSに指示を与える言語で、テーブルの作成や削除、テーブルへのデータの追加や上書き、削除、DBMS自体の設定の変更などの操作を行うことができる。

リレーショナルデータベースを管理するためのDBMSのことを「リレーショナルデータベース管理システム」(RDBMS)という。Microsoft AccessやFileMaker Proのようなデスクトップアプリケーションから、企業などの情報システムで専門の技術者が運用するOracle DatabaseやMicrosoft SQL Server、MySQL、PostgreSQLなどのサーバアプリケーションまで様々な規模、機能の製品がある。

データモデル

情報システムが取り扱う現実世界の対象をデータ集合として表現するため、対象を表す情報を抽象化して一定の構造や形式で記述したもの。データベースの設計・作成などのために行われる。

業務などで使用するシステムは様々な現実の存在を反映したデータを取り扱うが、システムの利用目的に照らして必要な情報(だけ)を、コンピュータプログラムによる自動処理に適した構造や形式で記録する必要がある。

現実の存在をどのようにデータとして表現するかを定めた取り決めがデータモデルで、データベースを用いたシステム開発などの際に設計作業の一環として作成される。データモデルを作成することを「データモデリング」(data modelling)という。

データモデルの表現形式や構築法には様々な手法があるが、例えば「ERモデル」(Entity-Relationship Model)を用いる場合、対象のうち名詞として表されるものを「実体」(entity)、実体間の関連性を「関係」(relation)、実体や関連の持つ性質を「属性」(attribute)として整理する。作成したモデルはER図などの形で図示して関係者間で共有することが多い。

人間による世界解釈からコンピュータの記憶装置上でのデータ構造へ落とし込んでいくため、対象全体を大まかにモデル化した「概念データモデル」、システム上で取り扱うデータをすべて詳細に定義した「論理データモデル」、論理データモデルをコンピュータ上の具体的な記録形式に変換した「物理データモデル」の三段階で詳細化する方式が用いられることがある。

企業などの情報システムではデータモデルが表すデータの格納先としてリレーショナルデータベース(RDB)が用いられることが多く、データモデルをもとに具体的なデータベーススキーマなどを設計し、データベース管理システム(DBMS)上でテーブルの構築などをしていく。

DBMS 【Database Management System】 ⭐⭐⭐

データベースを管理し、利用者や外部のソフトウェアからの要求に応えてデータの操作を行う専門のソフトウェア。

ハードディスクなどのストレージ装置(外部記憶装置)内に専用の管理領域を設け、データを記録するための構造体の作成や消去、構造の修正、データの書き込み、上書き、削除などを行う。条件を指定してデータを検索したり、特定のデータの集合を抽出したりする機能も提供する。

管理者や利用者が直接操作してこれらの操作を行うほかに、外部のソフトウェアからの接続を受け付け、指示を受けてこれらの操作を行うのもデータベース管理システムの重要な機能である。データの管理にデータベース管理システムを利用することで、個別のアプリケーションソフトがデータの記録・管理機能を自前で実装する必要がなくなり、自らの役割に専念することができる。

基本的な機能の他にも、誤ったデータの記録を拒否して整合性を維持する機能や、権限のない利用者による不正なデータの盗み見や改竄を防ぐ機能、関連する複数の操作を一体的に矛盾なく実行する「トランザクション処理」機能、障害に備えてデータを複製(バックアップ)したり過去のある時点の状態を復元する機能を備えたものもある。

DBMSの種類

データベース管理システムにはデータの記録形式(データモデル)によっていくつかの種類がある。最も広く普及しているのは「リレーショナルデータモデル」(関係データモデル)と呼ばれる方式でデータを格納する「「リレーショナルデータベース管理システム」(RDBMS:Relational Database Management System)で、単にデータベース管理システムと言えばRDBMSを指すことが多い。

代表的なRDBMS製品としては、米オラクル(Oracle)社の「Oracle Database」、米マイクロソフト(Microsoft)社の「SQL Server」、米IBM社の「Db2」などがあり、オープンソースソフトウェアとして配布されている「MySQL」や「PostgreSQL」「MariaDB」なども人気が高い。

パソコンなど利用者の操作環境上で単体のアプリケーションとして動作し、グラフィック表示(GUI)の操作・編集システムと共に提供される製品は「デスクトップデータベース」とも呼ばれる。個人やグループ単位の小規模なデータ管理に用いられ、「Microsoft Access」や米クラリス(Claris)社の「FileMaker Pro」などがよく知られる。

近年では「KVS」(Key-Value Store:キーバリューストア)や「列指向データベース」「グラフ指向データベース」「ドキュメント指向データベース」など非リレーショナル型のデータベース管理システムの増えている。RDBMSの問い合わせ言語であるSQL(Structured Query Language)に囚われないという意味で「NoSQL」(Not only SQL)と総称される。

RDBMS 【Relational DataBase Management System】

リレーショナルデータベースを管理するためのソフトウェア。外部からの要求を受け付けて、データベースの作成、データの読み込みや書き込み、トランザクション処理など様々な操作を行う。

リレーショナルデータベース(RDB:Relational Database)とは、一件のデータを複数の属性の組と捉え、組を列挙することでデータを格納していく方式で、属性を列、組を行とする表(テーブル)の形で示されることが多い。

機能

RDBMSはRDBを管理するためのソフトウェアで、コンピュータのストレージ装置内に専用の領域を設け、指定された構造に基づくテーブルの作成や削除、修正、レコードの追加、検索、抽出、上書き、削除などを行う。

データベース管理者などの利用者が直接操作してこれらの操作を行うこともできるが、外部のソフトウェアから接続を受け付け、指示を受けてこれらの操作を行うことが多い。RDBMSへの照会や操作の指示には「SQL」(Structured Query Language)と呼ばれる専用の言語が標準として用いられることが多い。

管理者が記録するデータについて課した制約条件に基づいて不整合なデータの記録を拒否してデータベースの整合性を保ったり、権限のない利用者による不正な読み出しや改竄などからデータを保護する仕組みも持っている。

また、関連する複数の処理を一体化して矛盾なく実行する「トランザクション処理」を行ったり、システム障害に備えてデータベースのバックアップ(複製)を行い、データの喪失・破損時に過去の特定の時点の状態に復旧(リストア)するといった機能を備えた製品も多い。

種類

企業などの情報システムで構造化されたデータの記録・管理を行う中核的なソフトウェアとして広く普及しており、デスクトップ環境で用いられる小規模な製品から、大規模システム向けの高機能、高性能な製品まで様々な種類がある。

著名なRDBMSとしては、米オラクル(Oracle)社の「Oracle Database」、米マイクロソフト(Microsoft)社の「SQL Server」、米IBM社の「Db2」などの商用ソフトウェア製品、オープンソースで配布されている「MySQL」「MariaDB」「PostgreSQL」などが知られる。

個人や小集団で利用する「Microsoft Access」や米クラリス(Claris)社の「FileMaker Pro」のようなデスクトップデータベース製品や、RDBMSをクラウドサービスとして提供する米アマゾンドットコム(Amazon.com)社の「Amazon RDS」「Amazon Aurora」などもある。

NoSQL 【Not only SQL】

データベース管理システム(DBMS)の分類を表す用語で、現在最も普及しているリレーショナルデータベース(RDB/RDBMS)とは異なる方式の総称。RDBでデータの問い合わせや操作に用いるSQL言語を使わずに管理することからこのように呼ばれる。

トランザクション処理やテーブルの結合といったRDBやSQLが得意とする機能が利用できない代わりに、大規模な並列分散処理や柔軟なデータ構造の定義など、リレーショナル型では不可能だったり苦手な機能を実現したものが多い。

代表的な方式として、標識(key)と内容(value)を一対一に対応付けて保存する「キーバリューストア」(KVS:Key-Value Store)がよく知られる。NoSQLの中で分散型KVSが最も種類が多く広く普及しており、KVSを指してNoSQLと呼ぶ用例が見られるほどである。

KVS以外の方式としては、柔軟で複雑な構造のデータをそのまま格納する「ドキュメント型データベース」(文書指向データベース)、表中の同じ列のデータをまとめて記録する「カラム型データベース」(列指向データベース)、グラフ構造でデータ間の繋がりを表現できる「グラフ指向データベース」などがある。

KVS 【Key-Value Store】

データ管理システムの種類の一つで、保存したいデータに対し、対応する一意の標識を設定し、これらをペアで格納する方式。標識を指定すると、対応するデータを取り出すことができる。

保存したい値(value)に対して標識となるキー(key)を設定し、両者をセットでストレージなどに書き込む。読み出し時にはキーを指定すると対応する値を取り出すことができる。既存のキーを指定して書き込むと新たな値で上書きされる。

値やキーに指定できるデータの種類は処理系によって異なり、キーは参照や識別がしやすいよう数値や文字列などが用いられることが多い。値には単純なデータ型やバイト列を指定できることが多いが、複雑なデータ構造やオブジェクトなどを格納できるものもある。構造的なデータを一定の決まった手順で文字列やバイト列に変換(シリアライズ)して保存する処理系もある。

一意のキーに値を対応付けて保存するデータ構造は多くプログラミング言語で連想配列、辞書(ディクショナリ)、ハッシュ、マップなどの名称で提供されてきており、KVSはこの仕組みを永続的なデータ管理システムに応用したものと考えることもできる。

伝統的なリレーショナルデータベース(RDB)に代わるデータ管理システムは「NoSQL」(RDBの操作を行うSQL言語を用いないという意味)と総称され、KVSはそのなかでも最も手軽で汎用的な方式として広く浸透している。複数のサーバや記憶装置などに分散してデータを保存できる機能を持ったものもあり、「分散KVS」(distributed KVS)と呼ばれる。

グラフデータベース

データベースの構造の一つで、データそのものに加え、データ同士の繋がりの情報を格納するデータベース。リレーショナルデータベースが苦手なデータ間の関係性をたどる操作を高速に処理することができる。

ここで言う「グラフ」は円グラフや棒グラフといったデータ集合を図で表したものではなく、コンピュータ科学のグラフ理論で取り扱われるデータ構造の一つである。データの集まりを「ノード」(node)「プロパティ」(property)「エッジ」(edge)の3要素の組み合わせとして表現する。

ノードは意味のあるデータ集合の単位(例:ユーザー情報)で、何らかの属性を表すプロパティ(例:ID、氏名、メールアドレス)を持つ。ノードは他のノードと何らかの繋がり(例:友達関係、フォロー関係)を持っており、ノード間の繋がりをエッジという。

構造と特徴

グラフ指向データベースはデータ集合をグラフ構造に従って格納するデータベースで、各ノードのプロパティとエッジの情報を保管する。ノードを指定してプロパティの書き込みや読み出しを行ったり、あるノードから繋がっている別のノードを素早く参照することができる。

例えば、SNSのユーザー情報で、あるユーザーの友達、友達の友達、友達の友達の友達…と繋がりをたどって関連ノードを挙げていく処理を一般的なリレーショナルデータベースで行うと負荷が大きく時間がかかるが、グラフ指向データベースでは瞬時に関連ノードを割り出して参照することができる。

一方、リレーショナルデータベースが得意な、プロパティについての条件を指定してノードを検索したり、ノード全体を対象に特定のプロパティの値を集計するといった使い方は難しい。実用上は、大規模で複雑な「繋がり」を含むデータ構造を取り扱う場合に特化して用いられる。

種類と応用

グラフ指向データベースを実装するための代表的なデータモデルとして「プロパティグラフ」と「RDFグラフ」(RDF:Resource Description Framework)がある。著名な製品としては「Neo4j」「JanusGraph」などがよく知られる。「Amazon Neptune」「Azure Cosmos DB」のようにクラウド上でグラフ指向データベースを提供するサービスもある。

グラフ指向データベースの主な応用分野として、SNSなどのソーシャルメディアにおけるユーザー間の繋がりの管理や分析、ECサイトなどで「おすすめ」を表示するリコメンデーション機能、移動や配送などにおける最適な経路の探索、金融機関などで取引情報を分析して不正を検知する機能などが挙げられる。

データクレンジング 【データクリーニング】

データベースなどに保存されているデータの中から、重複や誤記、表記の揺れなどを探し出し、削除や修正、正規化などを行ってデータの品質を高めること。

蓄積されたデータを分析したり活用したりする際に、同じ意味を表しているのに表記が微妙に異なっていて同一とみなされない例など、そのままでは自動処理に適さない状態になっていることがある。特に、複数の情報源からデータを集めた場合や、一件ごとに入力者が異なる場合などにこの点が問題となることが多い。

そのような場合に、一定の基準やルールなどを定め、一項目ずつデータを調べて適切な状態に編集、統合、補正などしていく処理や作業をデータクレンジングという。具体的な手法はデータの種類や形式、利用目的などにより様々である。

一般的な例としては、全角文字と半角文字の違いや、空白文字や区切り記号の有無、人名の異体字の誤りや姓名の分割・併合、法人名の表記(株式会社と(株)の違いなど)、住所や電話番号の表記法などが対象となり、それぞれについて表記ルールを決めて修正や削除などを行なっていく。

ER図 【Entity Relationship Diagram】 ⭐⭐⭐

情報システムの扱う対象を、実体、関連、属性の三要素でモデル化し、これを図示したもの。データベースの設計などでよく用いられる。属性を持つ実体を矩形で表し、実体間の関連を矢印で表す。

システムが取り扱う対象とする現実世界の要素を抽象化し、名詞として表すことができるものを「実体」(エンティティ)として矩形で表す。実体は必ずしも物理的な存在とは限らず、情報や行為などでも構わない。

実体間の関係性を表す要素は「関連」あるいは「関係」(リレーションシップ)と呼ばれ、動詞として表すことができるものが該当する。図中では菱形もしくは矩形の間を結ぶ線分として表記される。

実体と関連は共にその性質を表す「属性」(アトリビュート)を複数持つことができる。属性は楕円で表し実体や関連と線分で紐付ける記法と、実体の矩形の中に列挙する記法がある。

多重度

また、記法によっては関連に多重度(cardinality/カーディナリティ)を設定することができるものがある。二つの実体の関連が一対一、一対多、多対多といった対応関係になっていることを表す。

例えば、ER図の表記法の一つであるIE記法では、関連の末端部分に「○」(0を表す)「|」(1を表す)、鳥の足のような三股の枝分かれ(任意の複数を表す)の3つの記号の組み合わせで数を表記する。「|」のみならば「必ず一つ」、「○」と三股ならば「0を含む任意個」を表す。

記法の種類

ER図は1975年にマサチューセッツ工科大学(MIT)のピーター・チェン(Peter Chen)氏がERモデルと共に考案した。氏の提唱したオリジナルの記法は現在ではPeter Chen記法とも呼ばれる。

用途などに応じて微妙に表記法の異なる10以上の記法が考案され、様々な用途に使用されている。中でも有名なものとして、米国立標準技術研究所(NIST)が規格化したIDEF1x記法(IDEF:ICAM Definition Language)、ジェームズ・マーティン(James Martin)氏が考案したIE記法(IE:Information Engineering)がよく利用される。

コード設計

対象を識別する符号(コード)の記法や割当規則などを設計すること。分野や対象によって応じて適したコードの体系は異なる。

コンピュータシステムで現実の対象をデータとして取り扱うには、対象ごとに番号や英数字などから成る符号を割り当て、これを用いて対象の識別や同定を行う必要がある。符号をどのような文字や数字で構成し、各対象にどう割り当てるのかを決めるのがコード設計である。

代表的なコード体系には、現れた順に通し番号を与える「順番コード」(連番コード/シーケンスコード)、桁ごとに属性値を決めて組み合わせる「桁別コード」、グループごとに番号の範囲を割り当てる「区分コード」(ブロックコード)、人間にとって意味のある数値や英略語などを組み合わせる「表意コード」(ニーモニックコード)などがある。

どのような対象を扱うのか、対象についてのデータを人間やシステムがどのように扱いたいのかによって適したコードは異なる。例えば、対象が後からどのくらい増えるのか分からないのに範囲の狭い区分コードを使うべきではないし、人間がコードを見ただけで対象の特性などをある程度分かるようにしたければ表意コードを用いるべきである。

フィールド ⭐⭐

出題:令6,平23春

野原、競技場、領域、現場、などの意味を持つ英単語。ITの分野では、異なる種類のデータなどが集まってできた何らかの構造体における個々の項目や要素を意味する用例が多い。

オブジェクトのフィールド

例えば、オブジェクト指向プログラミングにおいて、オブジェクトやインスタンスの持つ固有のデータのことをフィールドということがある。言語によっては「プロパティ」(property)あるいは「メンバ変数」(member variable)と呼ぶ場合もある。

テーブルのフィールド

リレーショナルデータベースや表計算ソフトなど、データの集合を表(テーブル)の形で表すシステムでは、行やレコードを構成する個々の要素やデータ項目をフィールドという。複数行の同じフィールドを並べたものを列という。

ユーザーインターフェースのフィールド

ソフトウェアの操作画面上で、入力フォームなどを構成する個々の入力項目や書き込み欄などのことをフィールドという。特に、利用者が任意の内容を入れることができる要素をこのように呼ぶことが多く、例えば文字を入力する欄を「テキストフィールド」(text field)という。

動画やディスプレイのフィールド

インターレース走査(飛び越し走査)の映像や表示機器などで、一回の走査で書き換える画面半分のことをフィールドという。上から奇数番目あるいは偶数番目のラインの集合のことで、2フィールドの走査で画面全体が1フレーム書き換わる。毎秒60フィールドの書き換え速度の場合、毎秒30フレームの書き換えが行われる。

フレームやパケットのフィールド

プロトコル(通信規約)などで定義されたフレームやパケットなどのデータの送受信単位において、ヘッダなど制御用のデータ領域に配置された個々のパラメータのための領域をフィールドという。

データ先頭からの距離(何ビット目/何バイト目)と長さ、内容の形式などで定義され、データの宛先や送信元のアドレスなど、データの送受信に必要な制御用の情報が記録される。

レコード

出題:令6

記録(する)、記録物、登録(する)、録音(する)、録画(する)などの意味を持つ英単語。一般の外来語としては音声信号を記録した薄い樹脂製の円盤(アナログレコード)や、運動競技の最高記録などのことを指すことが多い。

データベースのレコード

リレーショナルデータベース(RDB)において、あるテーブル(表)に格納された、一組の値の連なりのことをレコードあるいは行(row)、組(tuple)などという。

RDBのテーブルは格納すべきデータの名前(属性名、フィールド名)と形式(データ型)を列挙して定義される。テーブル上のデータを操作(挿入や削除、更新など)する際には、定義で列挙された値の組を一件の記録単位として行う。この一組の値の集合をレコードと呼ぶ場合がある。一方、テーブル内の各レコードの特定のフィールドの値を並べたデータ集合は列(カラム/column)、属性(attribute)などという。

データ構造のレコード

いくつかのプログラミング言語では、データベースのレコードのように、固有の識別名やデータ型、形式を持つ複数の変数を一つにまとめたデータ構造のことをレコード型と呼ぶ場合がある。

レコード型の値の内部には、異なる型の変数や別のデータ構造(配列など)などを含めることができ、全体をまとめて一つの変数として関数などの引数や返り値に指定したり、丸ごと複製や代入を行ったりすることができる。

レコードをプログラム上で扱うには、まずレコードの構造の定義を行い、定義したレコードの実体を宣言して値を代入する。この過程は開発者がその言語に新しいデータ型を組み込むようなものであるため、言語によっては「ユーザー定義型」のように呼ぶ場合もある。ちなみにC言語では同じ仕組みを構造体と呼ぶ。

ファイル

コンピュータにおけるデータの管理単位の一つで、ストレージ装置(外部記憶装置)などにデータを記録する際に利用者やオペレーティングシステム(OS)から見て最小の記録単位となるデータのまとまり。

利用者がコンピュータを用いて記憶媒体にデータを保存、読み込み、移動、削除などする際に一つのまとまりとして取り扱うデータの集合を表し、OSの一部であるファイルシステム(file system)によって管理される。

ハードディスクやSSD、USBメモリ、光学ディスク(CD/DVD/Blu-ray Disc)などの記憶装置・記憶媒体を利用する際に用いられるほか、コンピュータと周辺機器の間やコンピュータ間の通信においてもデータの送受信単位として利用される。

ディレクトリとパス

ファイルシステムは記憶媒体内でファイルの作成や削除、上書き、移動、複製などを管理する仕組みで、複数のファイルをまとめて一つの集まりとして扱う「ディレクトリ」(directory)や「フォルダ」(folder)などの入れ物(領域)を作成することもできる。

ディレクトリやフォルダの中に別のディレクトリやフォルダを作成し、入れ子状にすることもでき、記憶媒体全体を階層構造に整理して管理する。装置内でのファイルの位置は、「C:¥Windows¥System32¥cmd.exe」のように最上位から順にディレクトリ名を繋げた「パス」(path)という記法で表される。

ファイル名

ファイルにはそれぞれ固有のファイル名が付けられ、これを用いて識別・指定される。多くのOSではファイル名の末尾にファイルの種類や形式を表す「拡張子」(extension)と呼ばれる数文字の英数字の符号が付与される。

コンピュータの操作画面ではファイルは記憶媒体内での位置(パス)やファイル名で表示され、キーボードなどからパスやファイル名を指定して操作する。グラフィック表示を用いるGUI(Graphical User Interface)を備えたOSでは、ファイルは種類によって異なるアイコン(絵文字)とファイル名によって表示され、マウス操作やタッチ操作でアイコンを指し示して操作を行う。

ファイル属性

ファイルはファイルシステムに記録される際に様々な属性や付加情報(メタデータ)と共に記録される。作成日時や最終更新日時、最終アクセス日時、作成者(所有者)、各利用者やグループのアクセス権限などが記録、設定される。

また、多くのOSではファイルに「読み取り専用」属性を付与でき、解除されるまで削除や上書きができなくなる。「隠しファイル」に設定されたファイルは通常の動作モードではファイル一覧画面などに表示されなくなる(ファイル名を直に指定すれば操作はできる)。

ファイル形式

ファイルに記録されるデータの形式や書式(ファイルフォーマット)は作成したソフトウェアによって様々だが、大きく分類すると「バイナリファイル」(binary file)と「テキストファイル」(text file)に分かれる。

バイナリファイルは特に制約なくあらゆるビットパターンを記録できる自由な形式で、その形式に対応したソフトウェアでなければ何が記録されているか知ることができない。テキストファイルはデータを文字情報として記録したファイルで、文字コード規格で規定されたコードに従ってデータを文字列に置き換えて記録する。対応ソフトがなくてもどのような文字が記録されているかは見ることができる。

テーブル

出題:令6

卓、台、表などの意味を持つ英単語。一般の外来語としては洋風の脚の長い大きな卓のことを指すが、ITの分野では要素を縦横に碁盤目状に並べて整理した表の意味で使われることが多い。

文書作成ソフトやWebページなどでは、内部が格子状に分かれた表のことをテーブルという。要素の垂直方向の集合を列(column:カラム)、水平方向の集合を行(row)という。

上端の行や左端の列に項目名などを入れ、他の各項にはそれぞれが属する行や列に該当する内容を書き入れる。一つの項目が複数行や複数列にまたがる場合には、これを連結して大きな項目にできる機能が提供されることもある。

プログラミングの分野でも、表のように複数の異なる要素間の対応関係を管理するためのデータ構造や格納領域をテーブルという。この場合は必ずしも2次元の格子状に整理された構造を指すとは限らない。

データベースのテーブル

リレーショナルデータベース(RDB)ではデータの格納領域をテーブルという。内部は行と列に分かれ、列が要素の種類や形式を表しており、データの挿入や削除、編集は各列の要素を組み合わせた行単位で行う。列は属性(attribute)とも呼ばれ、行は組(tuple)、レコード(record)とも呼ばれる。

主キー 【プライマリキー】 ⭐⭐⭐

リレーショナルデータベース(RDB)のテーブル内でレコードを一意に識別することができるように指定される項目(列/カラム)。

レコードを構成する項目の中から一つあるいは複数の組み合わせ(複合主キー)が主キーとして選択・設定される。主キーに選ばれた列はすべてのレコードが異なる値を持たなければならず、NULL値とすることもできない。レコードの中で主キーとして選択可能な項目(や項目の組み合わせ)のことを「候補キー」(candidate key)、候補キーのうち主キー以外のものを「代理キー」(alternate key)ということがある。

あらかじめ異なる値が格納されており、内容が更新・追加されないことが分かっている場合は、人間にとって意味のあるデータそのものを主キーとすることもあるが、レコードが動的に追加・生成されるテーブルでは、識別のためだけに通し番号のような項目を設け、これを主キーに設定することが多い。氏名の同姓同名のように意図せず重複してしまうことを避けるためである。

データベース管理システム(DBMS)などには、主キーのために一意の番号を自動生成するデータ型や機能(オートナンバー型、シリアル型などと呼ばれる)が用意されている場合がある。

外部キー 【FK】 ⭐⭐⭐

リレーショナルデータベース(RDB)で、テーブルのある列に、別のテーブルの特定の列に含まれる項目しか入力できないようにする制約。また、その際に指定する列。標準のSQLではFOREIGN KEY句を用いて設定できる。

ある列に入力するデータに制約を課し、別のテーブルのある列に登録済みのデータしか入力できないようにする。参照先のデータの変更に追随して自動的に参照元も書き換えるよう指定したり、参照先の削除や変更を禁じるよう指定することもできる。

例えば、受注テーブルの顧客コードの列に、顧客テーブルの顧客コードの列を外部キーとして設定すれば、顧客テーブルに登録されていない顧客コードを受注テーブルに誤って入力してしまうことを防ぐことができる。既存顧客の一覧から一つを選択して入力するような形にすることもできるようになる。

SQLでの記述

テーブル作成時には、CONSTRAINT句を用いて「CREATE TABLE テーブル定義 CONSTRAINT 制約名 FOREIGN KEY(列名) REFERENCING 参照先テーブル名(列名) 参照操作」という形式で記述する。列名は参照元、参照先ともに複数指定することができ、その場合は各列の値の組み合わせに対して制約を課す。既存のテーブルにALTER TABLE文で外部キーを追加することもできる。

「参照操作」は参照先のデータの更新や削除をどう扱うかを指定するキーワードである。「CASCADE」なら参照先の更新や削除に参照元を自動的に追随させ、「RESTRICT」なら参照されている値の(参照先での)更新や削除を禁じる。「NO ACTION」もRISTRICT同様に参照先の変更時にエラーを発するが、そのチェックはトランザクションの最後に行われる。

「SET NULL」は参照先が削除されたときに参照元にNull値をセットし、「SET DEFAULT」は列のデフォルト値をセットする。参照操作を更新時に適用するか削除時に適用するかは「ON UPDATE CASCADE ON DELETE RESTRICT」のように「ON UPDATE」および「ON DELETE」で指示することができる。

インデックス ⭐⭐

索引、見出し、添字、指数などの意味を持つ英単語。ITの分野では、書籍の巻末の索引のように、多数のものの中から特定の対象をすばやく見つけ出すため識別情報や、整列された所在情報の一覧などを指すことが多い。

プログラミングなどの分野では、同種の複数のものが並んでいるときに、個々の要素を区別するために付けられた通し番号などの識別情報をインデックスという。配列の要素を指し示す添字などが該当する。

データベースやファイルシステム、検索エンジンなどでは、収集・格納された大量のデータをすばやく検索・抽出するために作成された索引データをインデックスという。データ本体を端から順に探すよりも圧倒的に短い手順で目的のデータを探し出せる。

具体的には、見出しとなる識別符号と、データ本体のある所在情報などを対応付け、整列・分類などを行ったあと木構造やハッシュテーブルなど検索に適したデータ構造に格納したものを指すことが多い。

正規化 【ノーマライズ】 ⭐⭐⭐

データなどをある基準や形式に適合するように、一定の手順や規則に従って変形・変換すること。様々な分野で用いられる概念であり、それぞれ目的や方法などが大きく異なる。

リレーショナルデータベースの正規化

リレーショナルデータベース(RDBMS)では、データの保守性向上や処理の高速化を図るため、データベース内で同じ情報が複数の箇所に重複して記録されず、個々のテーブルは主キーから直接連想されるデータのみで構成されるよう設計するのが理想とされている。

この基準に基づいてデータ構造を再編する作業や操作のことをデータベースの正規化と呼び、正規化の度合いによって第1正規化から第5正規化、およびボイスコッド正規化などの種類に分類されている。

浮動小数点数の正規化

浮動小数点数を符号部、仮数部、指数部に分けてビット列で表す場合、同じ数を同じ符号化方式で表す場合でも仮数と指数の取り方によって複数の表現が可能となるが、標準となる形式を定めてこれに合わせて表現することを正規化という。

IEEE 754などの標準規格では有効数字の桁数が最大限に確保される表現に正規化するよう定められている。具体的には仮数部のビット列の左端の値が0以外になるように仮数を決め、それに合わせて指数が算出される。

XML文書の正規化

XML文書はテキスト形式を採用しているため、ホワイトスペースの扱いや要素の出現順序などに非常に寛容である。しかし、ソフトウェアにXML文書のデータを渡す場合や、データが改竄されていないことを証明するための署名などを行う場合には、XML文書を一定のルールに従って整形しなおす必要がある。

XMLの正規化は「Canonicalized XML」規格に定められたカノニカライズ(canonicalize)と、「XML Normalization」規格に定められたXML文書のノーマライズ(normalize)、XML規格本体に定められた属性値のノーマライズ(Attribute-Value Normalization)の3種類がある。

カノニカライズは論理的に同等の文書がバイナリデータのレベルで完全に一致するように整形する手順を定めており、XML文書が改竄されていないことを証明するための電子署名を有効に機能させるために必要となる。

XML文書のノーマライズは、ソフトウェアが文書の解釈や変換などを行いやすいように表記法を統一する処理を指す。XMLは名前空間を使用する場合などに意味的に同じ内容を複数の表記で書くことができるが、XML Normalization規格ではこれを一定の基準に基づいて統一された表記にすることを求めている。

属性値のノーマライズは、人間の入力の都合や見やすさなどのために様々な表記が混在する属性値を一定の基準で変換し、ソフトウェアが表記の揺れに影響されないようにする処理である。文字参照表現を参照先の文字自体で置き換えたり、改行文字やタブ文字を空白文字(16進数で20)に置き換えたり、連続する複数の空白を一文字に短縮するといった変換が行われる。

リレーショナルデータベース 【RDB】

出題:平26春

データベースの構造の一つで、一件のデータを複数の属性の値の組として表現し、組を列挙することでデータを格納していく方式。属性を列、組を行とする表(テーブル)の形で示されることが多い。最も普及している方式で、単にデータベースといった場合はこれを指すことが多い。

リレーショナルデータモデル(関係データモデル)と呼ばれる数学的なモデルに基づいてデータを秩序立てて格納したデータ集合である。一件の登録単位は複数の属性(attribute)の組(tuple)で、同じ属性を持つ組を何件も集めたデータの集合体をリレーション(関係)という。

これは実際には縦横に項目が並んだ表(テーブル)の形で整理される。リレーションが表に相当し、属性を縦方向に並んだ列(column)、組を横方向に並んだ行(row)として表す。システムによっては行を「レコード」(record)、列を「フィールド」(field)と呼ぶこともある。

実際のデータベースは「顧客マスタ」「製品マスタ」「受注明細」のように複数の表の集合として管理されることが多い。「受注明細の顧客IDは顧客マスタを参照する」といったように複数の表にまたがって同じ属性を配置し、対応付けて管理することができ、複雑なデータや大規模なデータを柔軟に取り扱うことができる。

RDBMSによる管理

関係データベースはRDBMS(Relational Database Management System:リレーショナルデータベース管理システム)と呼ばれる専用のソフトウェアによって作成・運用されることが多い。データベースの管理はRDBMSが行い、他のソフトウェアは必要なときにRDBMSへ接続して操作を依頼する。

RDMBSへの指示には「SQL」(Structured Query Language)という問い合わせ言語が標準的に用いられ、データベースの作成や削除、テーブルへのデータの追加や更新、指定した条件を満たすデータ集合の抽出などの操作を行なうことができる。

著名なRDBMSとしては、米オラクル(Oracle)社の「Oracle Database」、米マイクロソフト(Microsoft)社の「SQL Server」、米IBM社の「Db2」などの商用ソフトウェア製品、オープンソースで配布されている「MySQL」「MariaDB」「PostgreSQL」などが知られる。

個人や小集団で利用する「Microsoft Access」や米クラリス(Claris)社の「FileMaker Pro」のようなデスクトップデータベース製品や、RDBMSをクラウドサービスとして提供する米アマゾンドットコム(Amazon.com)社の「Amazon RDS」「Amazon Aurora」などもある。

歴史

関係データベースの基礎となる理論は1969年に米IBM社のエドガー・コッド(Edgar F. Codd)氏が提唱したリレーショナルデータモデル(relational data model)で、これを元に開発されたRDBMSが1980年頃から当時の大型コンピュータ向けのソフトウェアとして普及し始めた。

1990年代以降は他の方式を圧倒し、企業などが情報システムでデータの記録や管理を行う際の標準的な手法として広まった。近年では、用途によっては「NoSQL」(Not only SQL)と総称される非リレーショナル型の方式が導入される事例も増えている。

射影

出題:令4

物体にある角度から光を当て、ある面にその影を映すこと。また、そのようにして映しだされた影(の形)。数学のいくつかの分野で射影という操作が定義されている。

ITの分野では、関係演算やリレーショナルデータベースの操作において、ある関係(表)から指定した条件に従って特定のいくつかの属性(列)を抜き出す操作や、そのような操作の結果得られる関係(表)のことを射影ということが多い。

例えば、表「名簿」が「識別番号」「氏名」「住所」「電話番号」の4属性で構成されるとして、そこから「識別番号」と「氏名」のみで構成される表を抜き出す操作(および得られた表)を射影という。SQL文では「SELECT 識別番号,氏名 FROM 名簿」のように表現される。

トランザクション処理 【TP】 ⭐⭐⭐

関連する複数の処理や操作を一つの処理単位にまとめて管理する方式。処理に矛盾が生じないよう、途中でいずれかが失敗したら実行開始前の状態に戻す操作が行われる。

複数の処理を連結した処理単位を「トランザクション」(transaction)という。関連付けられた複数の処理が「すべて成功」か「すべて失敗」のどちらかであることを保証し、途中で処理が停止・失敗した場合にはすでに完了済みの処理を取り消して、トランザクション開始前の状態に戻すようになっている。

例えば、資金の移動を情報システムで処理する場合、「出金処理は完了したが入金処理には失敗した」状態で処理を終了することは許されない。このような場合に、入出金処理全体を一つのトランザクションとしてまとめて管理し、いずれかの処理が失敗したら残りも取り消して、すべて成功したときに初めて全体を完了とする。

トランザクション処理に求められる4つの特性を「ACID特性」という。複数の処理が一体不可分であることを表す “Atomicity”(原子性)、処理の前後でデータの整合性が保たれることを表す “Consistency” (一貫性)、他の処理へ影響を与えず、また影響を受けないことを表す “Isolation” (独立性)、処理結果が失われず永続することを表す “Durability”(耐久性)の頭文字をつなぎ合わせたものである。

データベースシステムなどでトランザクション処理が必要な場合は、データベース管理システム(DBMS)の機能やTPモニタなどの専用のミドルウェアを用いて複数の処理の一体的な管理を行う。一連の処理全体が成功してデータの変更を反映させることを「コミット」(commit)、途中で中断や失敗が生じて開始前の状態に戻すことを「ロールバック」(rollback)という。

排他制御 【相互排他】 ⭐⭐⭐

複数の主体が同じ資源を同時に利用すると競合状態(race condition)が生じる場合に、ある主体が資源を利用している間、別の主体による資源の利用を制限もしくは禁止する仕組みのこと。

例えば、あるプログラムがストレージ上のあるファイルに書き込みを行なっている最中に、並行して実行されている別のプログラムがそのファイルへの書き込みを開始してしまうと、ファイルの内容が破壊され整合性のないものになってしまう。

このような事態を防ぐために、ファイルへの書き込みが行われている間は別のプログラムによる書き込みを禁止するという制御が行われる。このような制御は「ロック」(lock)と呼ばれ、最も有名な排他制御の方式の一つである。

排他制御は割り込み禁止機構などのハードウェア上の機能を利用して実装する場合と、プログラムの実行制御によりソフトウェア的に実装する場合がある。オペレーティングシステム(OS)やライブラリなどの中には、これを利用するプログラムに対して何らかの同期機構を提供するものもある。

OS上のプロセスやプログラム上のスレッド間でロック機構を実現する方式として「ミューテックス」(mutex)がよく用いられる。また、資源が複数個ある場合の排他制御として、プロセスが資源へのアクセスを開始・終了する度に利用可能な残り数を増減させる「セマフォ」(semaphore)が用いられることもある。

トランザクション

出題:平30秋

商取引、売買、執行、取扱、議事録などの意味を持つ英単語。ITの分野では、取引記録など一般的な意味の他に、ソフトウェアがデータを処理する際、互いに関連・依存する複数の処理をまとめ、一体不可分の処理単位として扱うことを指す場合が多い。

トランザクション処理

データベースシステムや業務用ソフトウェアなどでよく用いられる概念で、金融機関のコンピュータシステムにおける入出金処理のように、一連の操作を全体として一つの処理として管理することを「トランザクション処理」(transaction processing)という。

ひとまとめのトランザクションとして登録された複数の操作は、必ず「すべて成功」か「すべて失敗」のいずれかとなるようシステムによって実行状態が管理される。処理の開始後、途中でいずれかの操作が失敗したら、それまでに行われた操作を取り消して最初からやり直す制御が自動的に行われる。

例えば、口座間の資金を移動をシステムで処理する場合に、出金と入金を個別に処理すると、片方の口座から出金した後に、もう一方の口座へ入金する前に障害が発生してシステムが停止してしまうと、出金した資金が宙に浮いてしまう。

このような事態を避けるため、出金と入金を一つのトランザクションとして管理する。出金後に障害で停止したら、復旧後に記録を参照して出金操作を取り消し、処理開始前の状態にデータベースの記録状態などを差し戻す。その後、必要に応じてもう一度出金から処理をやり直す。

トランザクションを管理するシステムが備えるべき性質は「ACID特性」としてまとめられている。処理がすべて成功か失敗のいずれかであることを保証する “Atomicity” (原子性/不可分性)、実行前後でデータの整合性が保たれる “Consistency” (一貫性/整合性)、トランザクションの実行が外部に影響を与えない “Isolation” (独立性/隔離性)、完了時に結果が恒久的に記録され、結果が失われない “Durability” (永続性/耐久性)の4つである。

取引、手続きの意

なお、情報システム分野では、複数の操作をまとめたトランザクション処理の意味以外にも、英単語の本来の意味に沿った「取引」などの意味でトランザクションということがある。例えば、商取引のデータを扱うシステムなどで、取引に関係する対象(商品、取引先など)に関するデータを「マスターデータ」、一件ごとの取引や手続き、操作などに関するデータを「トランザクションデータ」と呼ぶことがある。この場合の「トランザクション」はトランザクション処理の意味ではなく、現実世界で執行された取引などのことを表している。

ACID特性 【Atomicity Consistency Isolation Durability】

出題:令4

関連する複数の処理を一つの単位として管理するトランザクション処理に求められる、「原子性」「一貫性」「独立性」「耐久性」の4つの特性。

トランザクション処理は連続する複数の操作が一体的に一つの処理や手続きを形成したもので、例えば、銀行における口座間の送金処理は「送金元口座からの出金」と「送金先口座への入金」という二つの操作が一体不可分の関係となっている。

「出金したが入金に失敗した」状態で終了してはお金が宙に浮いてしまうため、全体が成功するか、さもなくば全体を取り消すといった制御を行う必要がある。このような場合にシステムに求められる4つの特性、“Atomicity” 、“Consistency”、“Isolation”、“Durability” の頭文字を繋げて “ACID” と呼んでいる。

“Atomicity” (原子性/不可分性)とは、トランザクションに含まれる個々の手順が「すべて実行される」か「一つも実行されない」のどちらかの状態になるという性質である。送金処理における出金と入金を一体的に扱うことなどが該当する。

“Consistency” (一貫性/整合性)とは、トランザクションの前後でデータの整合性が保たれ、矛盾の無い状態が継続される性質である。例えば、送金トランザクションによって口座の残高の値が負になるといったことが起きないようにする。

“Isolation” (独立性/隔離性)とは、トランザクション実行中の処理過程が外部から隠蔽され、他の処理などに影響を与えない性質である。例えば、送金処理の途上である「出金は実施済みだが入金は未実施」といった状態を外部から読み出されないよう排他制御などを行う。

“Durability” (耐久性/永続性)とは、トランザクションが完了したら、その結果は記録され、システム障害などが生じても失われることがないという性質である。データ操作の時系列の記録(ログ)をストレージなどに保存しておき、データ記録中に障害などで中断したら記録を元に更新を反映させるといった処理が行われる。

デッドロック

出題:平24秋

行き詰まり、手詰まり、膠着状態などの意味を持つ英単語。ITの分野では、複数の実行中のプログラムなどが互いに他のプログラムの結果待ちとなり、待機状態に入ったまま動かなくなる現象を指す。

一台のコンピュータ上で複数の処理の流れ(プロセスやスレッド)を並行して実行する場合、処理の矛盾や不整合を防ぐため、ある主体が特定の資源(メモリ領域など)を利用している間、他の主体がその資源にアクセスすることを禁じる「排他制御」が行われることがある。

並行に実行されているスレッドAが資源aを、スレッドBが資源bをそれぞれ占有(ロック)して処理を開始し、途中でAがbを、Bがaを必要とした場合、AはBがbを解放するまで待とうとするが、同時にBはAがaを解放するのを待とうとする。互いに相手の終了待ちとなってしまい、いつまでも処理が進まなくなってしまう。

このような状況は三者以上でも起きることがあり、AやBの処理そのものに一見誤りがなくても発生し得るため、原因不明の不具合としてなかなか発見できない場合もある。万能の解決策は無いが、ロックの順番を揃える、ロックの粒度を細かくする、同時にアクセスされやすい資源はグループ化して両方同時にロックするといった手法で緩和することができる。

2フェーズコミット 【2相コミット】

複数の独立したシステムが参加する分散トランザクションにおいて、処理の整合性が保たれるよう2段階に分けてコミットを行う手法。

トランザクション処理では、振り込みにおける出金と入金のように一体不可分な連続した処理を、すべて成功かすべて失敗(途中の処理が失敗したら実行済みの処理を取り消して開始前の状態に戻す)のどちらかに制御する。

分散トランザクションでは複数の独立した処理主体が一連の処理を分担して実行するため、通常のコミット処理によって結果を確定させることができない。このような場合に、準備と確定の2段階に分けてコミットを実施する方式を2相コミットメントという。

トランザクションの制御を司るコーディネータはまず、処理を実行して結果を返すよう参加者に通知する。各参加者はトランザクションを構成する処理を実行し、成功したら「コミット可能」の応答を返す。すべての参加者から成功の通知を受け取ったら、コーディネータはコミットを確定するよう参加者に通知する。これを受けてすべての参加者がコミットを実行することにより、トランザクション全体のコミットが完了する。

準備段階で処理に失敗した参加者がいた場合、コーディネータはトランザクションの失敗を全参加者に伝え、行った処理を取り消して巻き戻すロールバック処理を行うよう促す。参加者がコミット可能な状態で待っている際にコーディネータが故障などで停止すると、コミットもロールバックもできないまま放置されてしまうという問題がある。

リカバリー 【リカバリ】

出題:令3

復旧、復帰、回復、修復、復元、などの意味を持つ英単語。ITの分野では、故障や何らかの不具合で機能不全に陥った機器やシステム、ソフトウェアを復旧したり初期化することを表すことが多い。

ストレージ(外部記憶装置)について言う場合は、媒体の破損などでデータが正常に読み出せなくなった機器から可能な限りデータを取り出して保全したり、故障した装置を新しいものと交換して残りの装置からデータを復元する作業(RAID等の場合)などを表す。

ソフトウェアについて言う場合は、プログラムや設定の不具合で正常に動作しなくなったオペレーティングシステム(OS)などを消去し、再び導入(インストール)し直して初期状態に戻すことなどを指す。この場合、導入済みのソフトウェアや保存された設定情報、データなどは消去されるため、必要であれば利用者が別の装置への保全などを行わなければならない。

チェックポイント

「検問所」という意味の英単語。データベースなどで現在の状態をストレージ上に保存して更新を確定した時点などをこのように呼ぶ。一般の外来語としては「確認事項」「検査項目」などの意味で用いられるが、これは和製英語であり、英語ではそのような意味はない。

データベースのチェックポイント

データベース管理システム(DBMS)で、データベースへの変更をストレージ(外部記憶装置)上のファイルに書き込む処理や、最後にそのような書き込み処理が行われた時点のことをチェックポイントという。

データベースの内容の変更はまずメインメモリ(RAM)上で行われ、ストレージへの反映は変更内容がある程度溜まってからまとめて行われる。障害発生時にはチェックポイントのデータを元に復旧作業を行なうことが多い。

障害発生時にすでにコミットされたトランザクションの復旧には、チェックポイント時のデータにトランザクションログに記録された処理を適用していき、コミット時の状態に戻す。この作業を「ロールフォワード」(roll forward)という。

一方、障害発生時にコミットされていなかったトランザクションの場合は処理をすべて取り消して開始前の状態を復元し、最初からトランザクションをやり直す。これを「ロールバック」(rollback)という。

ロールバック 【後退復帰】

出題:平30秋

後退、巻き戻し、撤退、引き下げ、巻き返し、反撃などの意味を持つ英単語。情報システムの分野では、システム障害やデータの喪失、破損などが起きた際に、以前に正常に稼働していた特定の時点の状態に戻して復旧を試みることを指す。

ある時点の正常な状態のデータやプログラム、設定などを複製してまとめて保管しておき、障害などが発生した時にこれをシステムに書き戻してその時点の状態に戻す処理をロールバックという。

トランザクション処理のロールバック

特にデータベースシステムのトランザクション処理でよく用いられる概念である。トランザクション開始前の状態を保存しておき、コミットする前に途中で中断された場合に完了済みの処理をすべてキャンセルし、開始前のデータを書き戻して復旧する。トランザクションは途中で終了すると結果に矛盾が生じることがあるため、このような制御が行われる。

一方、障害発生時にすでにコミットされたトランザクションの場合には、ある時点(チェックポイント)で複製したデータを書き戻し、これにトランザクションログに記録された処理を適用していき、コミット時の状態に戻す。この復帰方式を「ロールフォワード」(roll forward)という。

ロールフォワード 【前進復帰】

データベースシステムなどに障害が発生したときの回復手法の一つで、ある時点(チェックポイント)で複製したバックアップデータを書き戻し、その後の更新データ(ジャーナル)を反映していって障害発生直前の状態に戻すこと。主に装置の破損など物理的な障害の際に用いられる。

障害発生時点ですでに完了(コミット)済みのトランザクションに対して用いられる復帰手法で、直前のチェックポイントで作成された全データのバックアップを、(交換後の新しい)記憶装置に書き込み、チェックポイント後に実行された処理を記録したジャーナルファイルの内容を順番に反映させていき、トランザクションが完了した状態を再現する。

一方、障害発生時に処理途上でコミット前だったトランザクションに対しては、チェックポイント以前の変更を遡って取り消していき、トランザクション開始前の状態に戻す。この処理を「ロールバック」(rollback:後退復帰)という。

トランザクション処理は複数の処理を一体化して実行するもので、「すべて実行前」「すべて完了」のいずれかになるように制御しなければならない。ロールフォワードはトランザクション完了時の状態に、ロールバックは開始前の状態にそれぞれ復帰するもので、いずれもトランザクションの原子性(atomicity)を維持することができる。

ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる