データ、データベースの種類について
データ、データベースの基礎
こんにちは!わいわわです。
機械学習やSQLの勉強を進めておりますが、
なんとなくデータなどの用語をふわふわした状態で進めておりました。
今回はこの基礎の部分をはっきりさせていきたいと思います!
データとデータベース
身の回りにはたくさんの情報があふれかえっています。
お店で売られている商品の名前や値段、住所録にのっている名前や電話番号、
スケジュール帳の日付や予定など、情報に囲まれて私たちは暮らしています。
この1つ1つの情報のことをデータと呼んでいます。
このようなデータはケースによっては膨大な量であったり、
バラバラであったり、いろんな場所に散らばったりしていると扱いづらいです。
ただ1カ所に整理して集めておけば、いつでも素早く見たい情報を取り出せたり、
複数の事実から分析を行って新たな情報を得られるようになったりします。
このように複数の出たを集めて有効に活用できるようにしたものが
データベースと呼ばれるものです。
データベースの特徴
おおまかに登録、整理、検索ができるという特徴があります。
データベースには大量のデータを登録することができ、
例えば随時商品データを追加するといったことができます。
そしてデータは整理してそれぞれ同じ形式で保存しておくことができます。
データベースを動かすシステム
データベースを扱うには、データベースを管理するデータベース管理システムを用います。
DataBase Management Systemの頭文字をとってDBMSと呼ばれることもあります。
データベース管理システムはデータの登録・整理・検索の機能の他、
- 登録するデータに対する制限
- データに矛盾がないように整合性を保つしくみ
- 不正アクセスの対策としてのデータの暗号化
- 障害が起きたときにデータを復旧する仕組み
などが兼ね備えられています。
データベース管理システムはデータベースの司令塔であり、
ここに指示を送ることでデータベースを操作することができます。
ユーザーとデータベースの間に入って仲介するイメージです。
商用とオープンソース
データベース管理システムには商用とオープンソースのものがあります。
商用...企業や個人が開発・販売しており有料
代表的な商用のデータベース管理システムには
- Oracle Database
- Microsoft SQL Server
- IBM Db2
などがあげられます。
オープンソース...ソースコードが公開され、自由で無料で使えるものが多い
無料のため機能面や安全性が劣っていると思われることがありますが
日々改良が加えられていたり、実用的な場面でも問題なく稼働している事例が多くあります。
ただしサポートはないことが多いので、専門知識が大事になってきます。
代表的なものとしては
- MySQL
- PostrreSQL
- SQLite
- MongoDB
等があげられます。
スクール時代にはMySQLを使用していました!
飲食店や小売店のPOSレジや図書館の本、ショッピングサイトなど
幅広い場面でデータベースが使われています。
SQL
そもそもSQLとはデータベースに命令を送るための言語です。
対話形式で1対1でやりとりを行います。
役割としては先ほど記述したデータべースでできること、を実行することができます。
データモデル
データベースには一定の規則に従ってデータが格納されています。
このデータ構造をデータモデルと呼び、以下の種類があります。
- 階層型
木が枝分かれしているように1つの親に複数の子がぶら下がっていくモデル。
会社の組織図に近いイメージです。
この構造はデータ検索が高速ですが、データの重複が起きるデメリットもあります。 - ネットワーク型
データを網目状で表すモデル。
階層型は1つの親に対して複数の子を持っていましたが、
この方は複数の親を持つこともできます。 - リレーショナル型
行と列を持った2次元の表にデータを格納するモデル。
複数の表を組み合わせることによって、
多様なデータに柔軟に対応できる特徴があります。
階層型やネットワーク型ではデータが格納されている構成を理解する必要があり、
構成を変更したら合わせてプログラムも改修する必要がありました。
リレーショナル型はその影響が少なく、
プログラムとデータを独立して管理しやすくなります。
現在は利便性の良さから多くンデータベースでリレーショナル型が使われています。
リレーショナル型について
テーブル...表形式でデータを格納しますが、この表のこと。
カラム...表のうちの列に当たるもの
レコード...表のうちの行に当たるもの
フィールド...各レコードの入力項目のこと
ここらへんは大丈夫ですね!
テーブル結合
リレーショナル型データベースでは
「複数の関連するテーブル同士を組み合わせてデータを取得する方法」
があり、これをテーブル結合と呼びます。
例)ショッピングサイトのテーブルで考える
usersテーブル…商品を購入したユーザーの名前と商品IDを格納
itemsテーブル…商品IDと商品情報を格納
この2つのテーブルを紐づけるために「商品ID」カラムが設けられています。
テーブル同士を結合するとレコードを組み合わてまとめてデータを取得できます。
メリットとデメリット
リレーショナル型のメリットとデメリットを記述します。
メリット
・あらかじめルールを決めることができる
(数値しか保存できない、空欄にできないなど)
・テーブル結合ができるため、伊那路d-多賀複数の箇所に点在することを防ぐことができる
・データの更新の際に1カ所を修正すればよいので更新コストを小さくできる
デメリット
・処理速度の遅さがデータが膨大だと目立つ
・別々のサーバに分けてデータを分散させることができない
・グラフや非構造化データといったような階層てなデータを表現することが難しい
NoSQL
NoSQL...リレーショナル型以外のデータベース管理システムを指している言葉
例)MongoDB、Redisなど
現在はほとんどがリレーショナル型ですが、ビッグデータが増えてきており、
NoSQLも注目されるようになっています。
NoSQLの特徴
メリット
・処理が早く、大量のデータを扱える
・多様な構造のデータが格納できる
・データを分散して処理することができる
デメリット
・リレーショナル型にあるデータ同士の結合がない
・データの一貫性や整合性を保つ機能は弱い
・トランザクションは使えないことが多い
NoSQLのモデルの種類
キーバリュー型
キーとバリューの2つのデータをペアにしたものを格納していくことができるモデル
シンプルな構成のため読み書きが速く、後から情報を分散しやすいことが特徴です。
カラム指向型
キーバリュー型を拡張したようなデータ構造で
1つの行を識別するキーに対して複数のキーとバリューのセットを
持つことができるようになっているモデルです。
ドキュメント指向型
JSONやXMLと呼ばれる階層構造を持った形式のデータを格納することができるモデルです。
MongoDBがこの型で、あらかじめテーブルの構造を決めておく必要がなく、
自由な構造のデータをそのまま取り込むことができるという強みがあります。
また、後からデータ構造が変わった場合でもデータベースの設計を変える必要がない
という点も強みです。
グラフ型
関係性を表現するのに最適なモデルです。
例えばユーザーAがBと友達で、BはCとDと友達といったような構造のデータを格納することに長けています。
この例の場合、Aのことをノードと呼び、各つながりをリレーションシップ、
それぞれが持つ属性をプロパティとして3要素を格納できます。
利用例としてはレコメンドシステムや、地図アプリの経路探索などがあります。
所感
今回はデータやデータベースについて学習しました。
今まで何気なくMySQLを扱っていましたが
リレーショナル型でかつオープンソースだということが分かりました。
後からでもこのように持っている知識とつなぎ合わせるのは大事ですね!
明日はデータ型について、まとめていきたいと思います!
Discussion