データベースの歴史: データベースとDBMS
昔、アメリカのある国の大規模な IT 企業で、非常に大量のデータを保存するというタスクが発生しました。それの何がそんなに難しいのですか?結局のところ、大企業にはお金があるので、より多くのハードドライブを購入できる、それだけです。
素晴らしいアイデアですが、よく言われるように、悪魔は細部に宿ります。大量のデータを保存するだけでなく変更する必要があり、それらからさまざまなサンプルが作成されました。さらに、さまざまな場所からさまざまなデータを選択し、それを迅速かつ美しく行う必要があります。
一般に、すべてはいつもどおりです。顧客は存在しないものを望んでおり、今回はハードドライブを購入するという決定は機能しませんでした。
![](https://cdn.codegym.cc/images/article/ffb700f7-60b3-4cfc-a274-a1a35a6b1f31/512.jpeg)
そこで、この IT 企業のプログラマーたちは、さらに大きな予算を自ら捻出し、調査作業を実施し、予算が終了したときにプレゼンテーションを行って、データをデータベースの形式で保存することを提案しました。データベースでは、すべてのデータがテーブルに格納され、各テーブルは個別のファイルに格納されます。独創的なものはすべてシンプルで、すべてが機能します。
しかし、そのようなプレゼンテーションは顧客には合わなかったため、次のような指摘が続きました。
![](https://cdn.codegym.cc/images/article/a7850c1c-b3ee-403d-8453-dcc511174b7b/512.jpeg)
- お金はどこにあるの、リボウスキ?
- データベースは、ファイルのセットの形式でデータを保存する古き良きストレージよりも優れているのはなぜですか?
- 本当に良い解決策が必要ですが、それだけではありません。
- そしてそれは予算全体を使いましたか?
プレゼンテーションルームには沈黙があった。しかし、誰もが予想外に、この状況はある若手開発者によって救われました。彼によると、データベースには特別なプログラムである DBMS (データベース管理システム) が接続されており、次のことが可能です。
- データベースの作成、変更、削除
- データベースに変更を加えます。つまり、新しいレコードを追加し、古いレコードを削除して変更します。
- また、あらゆるデータのさまざまな選択を超高速に実行します
そして、プログラマは、データをフィルタリングするための特別なスーパー言語であるSQLの設計も完了しつつあります。そして、この魔法の SQL 言語の助けを借りて、管理者は誰でもデータベースからあらゆるデータを簡単にフィルタリングして取得できると言います。
![](https://cdn.codegym.cc/images/article/216e75d9-299a-44a8-9e0a-0cc1d26717a8/512.jpeg)
プログラマはまだ言語の設計を終えていないだけなので、プレゼンテーションには SQL と DBMS についての言葉はありません。
嬉しいことに、顧客は聞いた説明に感銘を受け、この新しい言語がどうあるべきかについていくつかの相反する考えを表明し、その改良のための予算さえ割り当てました。
マネージャーとテクニカルディレクターは、プロジェクトが無事に完了したことをお互いに祝福し始め、すぐにこのイベントを祝いに行きましたが、この物語全体の中でジュニアプログラマーが最も重要な人物であることを完全には認識していませんでした...
一般的な DBMS と MySQL
現時点 (2022 年夏) では数百の人気のある DBMS があるため、そのうちのいくつかについて学ぶと役に立ちます。何から始めればいいでしょうか…
一方で、エンタープライズ DBMS 市場は数十年にわたって存在しています。したがって、認められたリーダーと有望な新人の両方がいます。一方で、ビジネス要件は常に増大しているため、企業の IT インフラストラクチャを構築するアプローチは常に変化しています。
今では、水平および垂直シャーディング、分散トランザクションを備えた数千台のサーバーのクラスターからのデータベースがあれば、誰も驚かなくなります。また、IT 部門には数十人のシステム管理者がいて、状況に応じてサーバーのハード ドライブを交換します。あらかじめ決められたスケジュール。
一般に、大企業で働いている場合は、データベースに多額の費用を払っている可能性が高く、次のようなものを使用しています。
オラクルデータベース
![](https://cdn.codegym.cc/images/article/8a53ac38-0a59-466a-9597-f3e6bf618a43/800.jpeg)
Oracle は 1979 年 (43 年前) に最初のデータベースをリリースしました。彼女はすぐに Oracle 2.0 という名前を付けて、この製品は新しいものではなく、実績のある製品であることを顧客に納得させました。
データベースの現在のバージョンは Oracle 21 cです。c の文字はwordcloud から来ており、いわば、Oracle が時代に追いついていて、そのソリューションがすべてのクラウド技術と完全に互換性があることを示唆しています。
Microsoft SQLサーバー
![](https://cdn.codegym.cc/images/article/532a4cde-2214-4bec-96db-bff84eb41af6/512.jpeg)
Microsoft は Windows ではなく、中規模および大規模企業向けのサーバー ソリューションを販売して多額の利益を上げています。Microsoft Office、Microsoft SharePoint、Microsoft Server など。そしてもちろん、これらすべてには優れたデータベースが必要です。したがって、マイクロソフトの製品やソリューションを使用している多くの企業は、そのデータベースを使用することを余儀なくされています。
Microsoft の DBMS は単にSQL Serverと呼ばれるため、面接で「SQL Server を使用したことがありますか?」という質問を聞いたら、これは抽象的な DBMS ではなく、Microsoft SQL Server であることを知ってください。
PostgreSQL
![](https://cdn.codegym.cc/images/article/b31cfc41-69af-488e-8079-5433fa502551/512.jpeg)
中小企業だけでなく大企業でもよく利用されている優れた無料DBMSです。これは、Amazon AWS が DB-as-Service として提供するデータベースの 1 つです。
MySQL
![](https://cdn.codegym.cc/images/article/0ea0a78a-41d2-43c3-8cd0-b4c72d4c142a/512.jpeg)
MySQL は、非常に人気のある無料のオープンソース データベースです。これは十分に文書化されており、高速に動作し、幅広い機能をサポートしています。現在、この DBMS の第 8 バージョンが利用可能です。
2008 年に Sun に買収され、2009 年に Oracle に買収されました。そして、それは彼女にとって利益となるだけでした。製品は常に開発され、改善されています。
MySQL Community Server 8.0 を例として使用して、データベースを操作する方法を学びます。
データベース内のテーブル: 列と列
異なる DBMS は異なる形式でデータを保存できるため、最も単純で最も古典的なオプションである MySQL DBMS を採用します。
そしてすぐに問題になるのは、たとえば会計書類などをどのように保管するかということです。最も簡単なオプションは、各ドキュメントを Excel ファイルとして保存することです。これにより、すべての関連ドキュメントを 1 つのフォルダーに保存できます。これが MySQL の仕組みです。
もう 1 つの類似点: Java 言語では、プロジェクト内にクラスとパッケージがありますが、同時にクラスとパッケージはディスク上でファイルとフォルダーとして表されます。同様のものは MySQL にも存在します。
MySQL データはテーブルの形式で保存され、データベースに結合されますが、同時にテーブルとデータベースはファイルとフォルダとしてディスク上に表示されます。データベースはフォルダーであり、その中のファイルはテーブルです。
各テーブルは列と行で構成されます。例:
![](https://cdn.codegym.cc/images/article/ef9c797e-174d-4b27-a109-ff88a837ac5a/512.jpeg)
重要!各列には名前とデータ型があるため、同じ列内のすべてのセルは同じ型の値を格納する必要があります。
MySQL のテーブルと Java のクラスの間に類似点を描くことができます。テーブルはクラスであり、テーブルにはクラスと同様に一意の名前があります。テーブルの列はクラス フィールドであり、フィールドと同様に、列にも一意の名前と型があります。テーブル行は Java のクラス インスタンスです。
クラスはオブジェクトがなくても存在でき、テーブルは行がなくても存在できます。Java では新しいオブジェクトを作成でき、MySQL ではテーブルに新しい行を追加できます。オブジェクトのフィールド値を変更できます。MySQL では、行内の値を変更できます。
テーブルはクラスではなく、特定のクラスのオブジェクトのコレクションであると言ったほうがさらに正確です。MySQL に従業員に関するデータを含むEmployee テーブルがある場合、Java ではArrayListコレクションを使用します。
そしてもちろん、すぐに疑問が生じます。このコレクションから特定のデータを取得するにはどうすればよいでしょうか?
GO TO FULL VERSION