普段の業務ではAWSをメインに使っていますが、最近Azureを勉強し始めました。データベースに関する学習ガイドの項目が非常によく整理されていたと感じ、関連知識点をまとめてみました。
データの主要概念を説明する
この部分の知識はAzureだけでなく、他のクラウドサービスやローカルデータベースの運用にとって不可欠なものだと考えています。
データを表す方法について
データは主に以下の三つの方法で分類されます:
構造化データ
半構造化データ
非構造化データ
それぞれのデータの種類について簡単に説明します。
構造化データ
構造化データは、Excelやスプレッドシートなどの形式で整理され、データ要素が明確に定義され、固定のデータフィールドに格納されているデータのことを指します。これらのデータは通常、表、行、列、フィールドなどの規則的な構造を持っており、データベース管理システム(DBMS)で管理しやすい形式で格納されています。
例として、顧客情報、在庫データ、取引記録などが挙げられます。
データベース内の特定のテーブルやフィールドに格納され、各要素は特定のデータ型(例:数値、文字列、日付など)を持ちます。
非構造化データ
非構造化データは、明確な構造がないデータ形式です(テキスト、画像、音声、動画等)。
非構造化データは自然言語処理、画像認識、音声認識などのテクノロジーを使用して分析できます。
Windows file folder、ウェブページのテキスト、写真、動画コンテンツ、音声録音等は非構造化データに該当します。
半構造化データ
半構造化データは、構造化データと非構造化データの中間に位置するデータ形式です。データはフィールドや列で構成されていますが、各要素の形式が異なることがあります。
半構造化データは、柔軟性が高く、異なるデータ型や属性を含むことができます。これにより、複雑なデータ構造を表現できます。
たとえば、HTML、 XML、JSON等はこちらの分類に入ります。
よくあるデータのワークロード
以下は3つのリレーショナルデータベースのワークロードです。
▪ トランザクションワークロード(OLTP)
▪ 分析ワークロード(OLAP)
▪ データウェアハウス
トランザクションワークロード(OLTP: Online Transaction Processing):
トランザクションワークロードは、データベース内の短期間で処理される大量のトランザクション(データの追加、更新、削除)をサポートするために設計されています。主に日常の業務処理に使用され、データの一貫性と正確性を重視します。
応用例: 銀行のATM取引、オンライン注文処理、在庫管理等。
Azure OLTPの例
- Azure SQL Database
- SQL Server in a VM
- Azure Database for MySQL
- Azure Database for PostgreSQL
分析ワークロード(OLAP: Online Analytical Processing):
分析ワークロードは、データベース内の大量のデータをクエリし、洞察を得るために使用されます。
データの集計、統計情報、トレンドの分析、ビジネスインテリジェンスに適しています。レポート作成やダッシュボードの生成にも使用されます。
応用例: 売上分析、市場セグメンテーション、顧客傾向の理解等。
Azure OLAPの例
- SQL Server with Columnstore indexes
- Azure Analysis Services
- SQL Server Analysis Services
データウェアハウス
データウェアハウスは、組織内の異なるデータソースからデータを収集、統合し、歴史データを格納する専用のデータベースです。分析ワークロード向けに最適化されており、大量のデータを高速にクエリし、高度な分析を可能にします。時系列データ、トレンド分析、ビジネスインテリジェンスに使用されます。
応用例: 企業全体の財務データの統合と分析、長期の業績評価等。
Azureデータウェアハウスの例
- Azure Synapse Analytics
Azure 上のリレーショナル データベース
リレーショナルデータベース(RDS:Relational Database)は、データを表形式で管理し、データ間の関係(リレーション)を利用して情報を格納および操作するためのデータベース管理システム(DBMS)の一種です。リレーショナルデータベースは、データをテーブルとして構造化し、行と列で表現される二次元的なデータ構造を使用します。
▪️データベースのスキーマ:
テーブルとそれに関連するエンティティ(実体)を定義します。データベース内でどのようにデータが組織され、データがどのように関連付けられるかを定義する構造的な設計です。
▪️テーブルとエンティティ
テーブルはデータの実際の格納場所であり、エンティティはテーブル内の特定のデータの種類を表します。たとえば、"顧客"というエンティティは、"顧客テーブル"に対応することがあります。
▪️カラムと属性:
テーブル内の各エンティティは、カラムまたは属性で定義されます。カラムはエンティティの特定の情報または特性を表し、データの型(文字列、数値、日付など)を指定します。
例えば、"顧客テーブル"のカラムには "顧客名"、"住所"、"電話番号"、"メールアドレス"等
▪️キー:
データベーススキーマはテーブル間の関連性を定義します。これは、テーブルのキー(主キーと外部キー)を使用しています。
主キーはテーブル内の一意のエンティティを識別し、外部キーは他のテーブルとの関連を示します。これにより、データベース内のデータ間の結びつきが確立されます。
リレーショナルの正規化
リレーショナルデータベースの正規形は、データベース内のデータを整理し、冗長性を減少させ、データの一貫性と整合性を確保するための規則のセットです。正規形には第1正規形(1NF)、第2正規形(2NF)、第3正規形(3NF)などがあります。以下にそれぞれの正規形を説明します:
第1正規形(1NF)
第1正規形は、テーブル内の各列が個別の値を持ち、重複のないデータが格納されていることを要求します。
テーブル内の各カラムは、単一のデータ型(数値、文字列、日付など)を持つ必要があります。
また、各行(レコード)は一意の識別子(主キー)によって区別される必要があります。
第2正規形(2NF):
第2正規形は、第1正規形を満たすうえで、追加の条件を加えます。それは、非キー属性(主キー以外の属性)が主キーに完全に関連する必要があることです。
つまり、テーブル内の各非キー属性は、主キー全体に関連し、部分的にではなく、主キーの値全体に依存する必要があります。
第3正規形(3NF):
第3正規形は、第2正規形を満たすうえで、さらに追加の条件を付け加えます。それは、非キー属性同士が互いに関連しないようにすることです。
つまり、テーブル内の各非キー属性は、他の非キー属性に依存していてはならず、トランジティブな関数従属(過度な関連性)が存在してはなりません。
一般的な構造化クエリ言語 (SQL) ステートメント
SQL
SQL(Structured Query Language)は、データベース管理システム(RDBMS)内でデータの操作、クエリ、管理を行うための標準化されたプログラミング言語です。SQLはリレーショナルデータベース内のデータの格納、取得、更新、削除、操作に広く使用され、データベース関連のタスクを実行するための強力なツールです。
DDL(Data Definition Language):
DDLはデータベースの構造とスキーマを定義および変更するためのSQLコマンドのカテゴリです。
DDLコマンドには以下のようなものが含まれます:
▪️CREATE: 新しいデータベース、テーブル、ビュー、インデックスなどのオブジェクトを作成します。
▪️ALTER: データベースオブジェクトの構造を変更します(例:テーブルのカラムの追加、変更、削除)。
▪️DROP: データベースオブジェクトを削除します。
▪️TRUNCATE: テーブル内のデータを削除します。
▪️COMMENT: テーブルやカラムにコメントを追加します。
DML(Data Manipulation Language):
DMLはデータベース内のデータの操作、挿入、更新、削除、およびデータのクエリに使用されるSQLコマンドのカテゴリです。
DMLコマンドには以下のようなものが含まれます:
▪️SELECT: データの取得とクエリを実行します。
▪️INSERT: データをテーブルに挿入します。
▪️UPDATE: データを変更または更新します。
▪️DELETE: データをテーブルから削除します。
DCL(Data Control Language):
DCLはデータベースへのアクセス権、セキュリティ、およびデータの整合性を管理するためのSQLコマンドのカテゴリです。
DCLコマンドには以下のようなものが含まれます:
▪️GRANT: 特定のデータベースオブジェクトに対する特定の権限をユーザーやロールに付与します。
▪️REVOKE: データベースオブジェクトから特定の権限を取り消します。
▪️COMMIT: トランザクション内の変更を確定し、データベースに反映します。
▪️ROLLBACK: トランザクション内の変更を取り消し、データベースを以前の状態に戻します。
Azure のリレーショナル Data Services
Azure SQL 製品ファミリ
▪️Azure Virtual Machines 上の SQL Server
▪️Azure SQL Managed Instance
▪️Azure SQL Database
Azure Virtual Machines 上の SQL Server
Azure仮想マシン(VM)上にSQL Serverをデプロイするものです。これはSQL Serverの伝統的なオンプレミス展開に似ており、SQL Serverの完全な制御を提供します。
お客様はSQL Serverエンタープライズエディション、標準エディション、Webエディションなどを選択でき、自分でSQL Serverの設定と管理を行う必要があります。
カスタムアプリケーションのホスティング、既存のSQL Serverワークロードの移行、高度なカスタマイズに適しています。
Azure ポータルで検索すると、たくさんの選択が出てきます。
※SQL Server Option: 2008, 2012, 2014, 2017, 2019, 2022
Azure SQL Managed Instance
Azure SQL Managed Instanceは、SQL Serverの完全なエンタープライズ機能と互換性を持つ完全にマネージドされたデータベースプラットフォームです。既存のアプリケーションとワークロードをAzureに移行し、SQL Serverとの適切な互換性を保ちつつ、クラウドのメリットを享受できます。データベースの設定やパフォーマンスに関する多くの管理タスクは自動化されており、アプリケーションの移行を容易にします。
Azure SQL Database
Azure SQL Databaseは、完全にマネージドされたクラウドデータベースプラットフォームで、リレーショナルデータベースをホストするために設計されています。ユーザーはデータベースの作成、スケーリング、バックアップ、セキュリティなどをAzureに任せることができ、データベースのパフォーマンスと可用性について心配する必要はありません。サーバーレスSQLプール、ハイブリッドトランザクションレプリケーション、Elastic Database Poolなど、多くの機能が提供されています。
オープンソース データベース システム用の Azure データベース サービス
Azureは多くのオープンソースデータベースプラットフォームをホスティングおよびサポートしており、これらのデータベースをAzure上で実行できます。以下はいくつかの主要なAzureでサポートされているオープンソースデータベースの例です。
Azure Database for PostgreSQL:
PostgreSQLは高度に拡張可能なオープンソースのリレーショナルデータベース管理システム(RDBMS)です。Azure Database for PostgreSQLは、PostgreSQLデータベースをAzureでホストし、自動バックアップ、スケーリング、セキュリティを提供します。
例として、
Document Data
Column family data
Key-value Data
Graph Data
Azure Database for MySQL:
MySQLは人気のあるオープンソースのRDBMSで、Webアプリケーションやアプリケーション開発で広く使用されています。Azure Database for MySQLはMySQLデータベースをAzureでホストし、高可用性とセキュリティを提供します。
Azure Database for MariaDB
MariaDBはMySQLから派生したオープンソースのRDBMSで、高性能で安定性があります。Azure Database for MariaDBはMariaDBデータベースをAzureで実行し、スケーリング、セキュリティ、バックアップを提供します。
※SQL Server uses T-SQL, Oracle uses PL/SQL, MYSQL uses SQL/PML, PostgreSQL users PL/pgSQL
Azure 上の非リレーショナル データ
非リレーショナルデータベース、またはNoSQLデータベースは、伝統的なリレーショナルデータベース(RDBMS)に対抗するデータモデルおよびアーキテクチャを提供するデータベースタイプです。これらのデータベースは、大容量データの保存、高速データの読み書き、柔軟なデータモデリングなどの異なる要件に対応します。
Azure Storage の機能について
Azure Storageは、Microsoft Azureクラウドプラットフォーム上でデータを格納、管理、保護するための統合ストレージソリューションです。Azure Storageにはさまざまなストレージサービスが提供されており、それぞれ異なるデータの格納およびアクセス要件をサポートします。以下に、主要なAzure Storageサービスについて説明します:
Azure Blob Storage:
Azure Blob Storageは、大容量の非構造化データを保存および管理するためのストレージサービスです。Blob(Binary Large Object)は、画像、ビデオ、ドキュメント、バックアップ、アーカイブなどのデータを格納できます。ファイルの保存、アクセス制御、バックアップ、バージョン管理、CDN(Content Delivery Network)との統合などが可能です。
Azure File Storage:
Azure File Storageは、クラウドベースの共有ファイルストレージサービスです。これにより、Azureベーブル仮想マシンおよびクラウドサービスとの間でファイルを共有できます。
グループでのファイルアクセス、サーバーメッセージブロック(SMB)プロトコルの使用、フォルダとファイルのアクセス制御が可能です。
Azure Table Storage:
Azure Table Storageは、スケーラブルで高速なNoSQLデータベースサービスです。大量のデータを格納し、クエリでき、高可用性を提供します。データのカラムファミリー、キーによるアクセス、スケーラビリティ、複数のデータセンターでのデータレプリケーションがサポートされています。
Azure Cosmos DB の機能
Azure Cosmos DBは、Microsoft Azureのマルチモデル分散データベースサービスで、グローバルな規模でデータを格納、クエリ、およびスケーリングするために設計されています。Azure Cosmos DBは、多くの異なるデータモデル(API、ドキュメント、キー値、列指向、グラフ)をサポートし、高い可用性、低遅延、セキュリティ、スケーラビリティを提供します。
ノーリレーショナル データのデータタイプ
Document Data
Document Data:
Key-value型、Json、XML等の半構造化データ格納します。
Column family data:
データを列ごとに格納します。データは列ファミリーと呼ばれる論理的なグループにまとめられます。
Key value Data:
Key-Valueデータベースは、単純なキー(Key)とその対応する値(Value)のペアでデータを格納します。各キーは一意であり、それに対応する値はデータの本体となります。
Graph data:
Graphデータベースでは、データはノード(Node)とエッジ(Edge)の2つの基本要素から構成されます。ノードは実体を表し、エッジはノード間の関係を示します。
大規模な分析の一般的な要素について説明する
Azure Data Warehousing
データウェアハウスは、組織内の異なるデータソースからデータを収集、統合し、歴史データを格納する専用のデータベースです。分析ワークロード向けに最適化されており、大量のデータを高速にクエリし、高度な分析を可能にします。時系列データ、トレンド分析、ビジネスインテリジェンスに使用されます。
例:企業全体の財務データの統合と分析、長期の業績評価等。
対称型マルチプロセッシング(SMP: Symmetric Multi-Processing)
- Azure SQL Bdatabase
- SQL Server in a VM
大規模並列処理(MPP:Massively Parallel Processing)
- Azure Synapse Analytics(SQL DW)
- Apache Hive on HDlnsight
- Interactive Query(Hive LLAP) on Hdlnsight