データーベース入門
【開発環境】
OS:Win11(64ビット)
VSCode1.72.2、
クロム
Node.js;v20.18.0
バックエンドフレームワーク:Express.js
npmパッケージ:nodemon
【データーベースとは】
Data(データ)とBase(基地)を起原とする用語で、文字通り「データの集約基地」、つまりさまざまなデジタルデータを収容する論理的領域を指し、更にそれらのデータを管理したり、運用することが出来る事がもの
【データベースの種類】
1.階層型
データのことをノードと呼び、あるノードから別のノードを派生させて、ツリー上に展開してデータを保存しているデータベースのことです。階層型データベースでは、派生前のデータを親ノード、派生後のデータを子ノードと呼び、親ノードは複数個のノードを持つことができ、子ノードは1つだけ親ノードを持ちます。
2.ネットワーク型
ネットワーク型データベースは、階層型データベースと同じようにデータをノードで表し、あるノードから別のノードを派生させて、ノードのつながりが網目状になるように展開されるデータベースのことです
3,関係型(リレーショナルデータベース)
リレーショナルデータベースは、レコードという行とフィールドという列で構成され、テーブルと呼ばれる表形式のデータベースです。表形式のデータを互いに関連付けて、データ同士の関連性から新しい表を作成したりでき、エクセルを扱うように使用できるので、リレーショナルデータベースはさまざまな場面で使用されています
4.NoSQL
データベースを操作するための言語であるSQLを使用せず、リレーショナルデータベースで扱うのが難しい大規模なデータに対応するためのデータベースのことです。
【NoSQLの種類】
1.キーバリュー型:Pythonの辞書型のように、キーと値がペアである特徴を有する基本的かつ単純なNoSQLの形式。
2.カラム指向型:キーバリュー型の値の部分が1つ以上のカラム(列)になったもの。構造はRDBに近い
3.ドキュメント指向型:キーに紐づくデータをドキュメント形式で格納できる。書き方の自由度が最も高く、複雑な要素を持つデータを格納できる。
4.グラフ指向型:「ノード」と呼ばれるデータの実体と、「エッジ」と呼ばれるノードどうしの関係性を示す情報で構成されている。
【MongoDBとは】
NoSQLのデータベースの中では世界中で最も広く活用されている。NoSQLの種類の中ではドキュメント指向型に該当し、データを「ドキュメント」にJSONに類似した形式で格納して管理する
MongoDBのアーキテクチャは以下の通り。
1.RDBのようにレコードをテーブルに格納するのではなく、「ドキュメント」.と呼ばれる構造的データをJSONに類似している形式で表現し、そのドキュメントの場合を「コレクション」で管理する
2.コレクションはスキーマレスなドキュメントで格納され、任意のフィールドを好きなときに追加できる
3.ドキュメントには複雑な階層構造を持たせられる。それらの構造に含まれるフィールドを指定したクエリやインデックスの生成も簡単な指定で行える
4.ソート・集計や値の検索が得意である。
【MongoDBの特徴】
- ドキュメント形式でデータを保存できる――MongoDBの公式サイトによると、ドキュメント形式はあらゆるプログラミング言語でデータを保存したり取得したりできるので迅速に開発を進められるそうだ。
- デプロイの選択肢が豊富――MongoDBはMongoDB Atlasを通じて主要なクラウド(AWSやGCPなど)で無料で活用できる。
- すぐに始められる――MongoDBは、一回インストールすればすぐにコードを書き始められる。
- 大容量のデータに対応できる
- エコシステムが成熟しており、情報量が豊富
- 公式ドキュメントやチュートリアルなどの開発に関するテクニックが豊富。初心者でも苦なく学びやすい。
【MongoDBの問題点】
ただし、MongoDBにも主に以下のような問題点がある。
- SQLが使えない。データベースの処理・操作はJavaScriptで行う。
- RDBのように高度な結合操作ができない。
- トランザクション処理が非常に煩雑。
複数のトランザクションを必要とするクエリが必要になる場合、MongoDBでの開発は適さない。MongoDBはどの開発にも通用する万能薬ではないので、システムに合わせて適材適所でRDBと使い分けなければならない。