質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.13%

そもそもデータベースって何で出来ていて、どこの何にどう保存されるのでしょうか。。

解決済

回答 10

投稿

  • 評価
  • クリップ 19
  • VIEW 11K+

score 51

 質問したいこと

私は今、データベースの勉強をしています。
ネットや書籍を中心に情報を収集しております。RDBや、DBS、SQLなど、様々な知識を学ぶことはできるのですが、1つ私の中で大きな疑問があり、その疑問については、どの媒体も説明していないように感じたので、ここで質問させていただきます。

その疑問は、「そもそも、データベースは物理的に、どのようなPCパーツ?(部品)で組み立てられていて、データはどのような手順でどこに保存されるのか」という内容です。

保存されたデータをどのように呼び出すか、データベースをどのように管理するか、などと言った知識については本当に多くの説明がありますが、例えば私が、ローカルの環境でmysqlを立ち上げ、dogsというテーブルを作成し、{name: ポチ, age: 3, owner: 佐藤さん}のようなデータを保存した場合には、何がどう動いて、この文字情報はどのように変換され、最終的にどのような部品にどう格納される?のか、といった根本的な流れに対する説明は無いように感じます。
(ローカルの環境ではなく、例えばAWSにEC2アカウントを作成し、RDSを使用した場合、RDSに上記のdogsテーブルとデータを登録した場合はローカルとどう動きが異なるのかも気になります)

恐れ入りますが、この私の疑問にご回答いただけますと幸いです。また、もし可能であれば、私はこのような「そもそも」の疑問をいつももってしまうので、このような疑問に対する回答が掲載されている書籍、サイトなどをご教示いただけると幸いです!
何卒よろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 10

+14

データベース(管理システム)もプログラムですから
今回の質問には「プログラムはなぜ動くのか」あたりの
本を読んで基礎的な知識を学習されるのがよろしいかと。

以下は余談ですが…
いまのデータベースはほぼおまかせで導入しても動くように
なっていますが、逆に言うと細かな情報は隠ぺいされてる
ということもできますね。
昔の構造型データベースならば、物理的な構成/論理的な構成/
インデックスやキーに関する情報などこまごまとした
コンフィグレーションが必要でした。
翻って「いま」そういう情報が必要な人といえば
データベース管理システム自体を作る人か
おまかせでは解決できない問題を抱えている人でしょう。
そのへんの人が操る魔術的な秘法を知りたいのだ!
と期待されているならば申し訳ありませんが
概して地味な技術の積み上げでしかありませんよ?
例えば華やかなアスリート達も同様に、日々の地味な
練習が試合での華やかな活躍へとつながっている訳です。
これら「地味な部分」を楽しめるか否かが適性なのかなあ
などと思ったりします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/09/27 12:29

    ご丁寧な回答、誠にありがとうございます。プログラムはなぜ動くのか、ただいま購入しました。早速読みます。ご指摘いただきました魔術的な秘法、知りたいです。地道な技術の積み上げを楽しみながら、これから頑張ります。ありがとうございました!!

    キャンセル

checkベストアンサー

+10

「SQLの世界」では、ハードウェアは抽象化されていますので、動作をさせる上では実態を考える必要はありません。データの実体は、多くの場合「ディスクに置かれたファイル」ですが、永続性より速度を重視する、全データをメモリに置いたインメモリデータベースも存在します。

ただし、読み書きする物理的な速度からの制約はありますので、極限までチューニングする場合はハードウェアの性能まで考える必要があります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/09/27 11:15

    RDSについては完全にマネージドなサービスですので、エンドユーザーがアクセスできるのは「データベース的な接続」と「管理コンソールからの設定変更」だけで、実際のファイルにはアクセスする手段自体がありません。

    キャンセル

  • 2018/09/27 12:18

    ご丁寧な回答、誠にありがとうございます。大変勉強になりました。そもそもの知識が致命的に欠如しているのですがもう一つ質問させて下さい。データの実態は多くの場合、「ディスクに置かれたファイル」であるということは、例えばローカルにインストールしたmysqlにdogsテーブルやcatテーブル、などのデータを無数に作った場合、どこの何の容量がいっぱいになっていくのでしょうか。。

    キャンセル

  • 2018/09/27 12:31 編集

    >どこの何の容量がいっぱいになっていくのでしょうか
    指定したテーブルスペースにデータは格納されます。
    https://dev.mysql.com/doc/refman/5.6/ja/innodb-tablespace.html
    こういったことも、実際に動かしてみることで分かる部分ではないかと思います。

    キャンセル

  • 2018/09/27 12:46

    回答ありがとうございます。ちょっと難解ですが、読み込みます。お手数をおかけしました、助かりました。

    キャンセル

+7

回答になっているかわかりませんが、私もそもそも論は割りと気になるタチですので、共感できます。

コンピュータの中で、データがどのように動いて、どう変わっていくのかを知るには、この「コンピューター&テクノロジー解体新書」がとてもお勧めです。あとはどなたかの回答になったとおり、DBはソフトウェアですので、根幹を知りたければ本書をお勧めします。
http://amzn.asia/d/jcAwA3r

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/02 17:34

    あ、このようなご意見待ってました。ものすごく助かります。解体新書、ただいま購入いたしました。すごく気になります。いつも何かしらの説明を読む度にちょっと待って、そもそもそれって、何なの?何故なの?ってなっています。ご意見誠にありがとうございました!

    キャンセル

+5

基本的には他の方が回答されているので補足です。
データベースのソフトウェアを動かすのは、普通のPCでも構いませんが、信頼性や性能の向上させるために専用設計になったハードウェアもあります。
一般的なPCで何も考えずにデータベースを作った場合、HDD内にファイルが出来て、その容量が増えていきます。
データベースと一言に言っても、似た言葉が多くて混同しやすいかもしれませんね(データベースサーバ、データベースソフト、データベースファイル)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/02 10:05

    返信が遅くなってしまいました。ご丁寧な回答、誠にありがとうございます。そのことが聞きたかったと言う内容で、とても嬉しいです!補足いただき誠にありがとうございました!

    キャンセル

+4

こんにちは

その疑問は、「そもそも、データベースは物理的に、どのようなPCパーツ?(部品)で組み立てられていて、データはどのような手順でどこに保存されるのか」という内容です。

DBに属する全ての情報は、一旦メモリーを介してディスク上に保存されます。読み込みはその逆となりますが「手順」というところに関してはACIDを保証するための複数の膨大なプログラムになります。恐らくこの部分の説明が記載されていたとしても、理解することは難しいでしょう。参考書はDBの概念や部分的構造を解説することで、データの取り扱いやDB設計・運用ができるよう手引きすることが目的で書かれているものだと思います。

このような疑問に対する回答が掲載されている書籍、サイトなどをご教示いただけると幸いです!

この問いに最も答えるべきと思いましたが、残念ながらよいコンテンツが見つけられませんでした。

自分の経験上思い付くことは、単純なファイルの読み書きを体感するために、実際にプログラムを書かれてみてはどうでしょうか。参考書を探しても良いし、コンテンツを探しても良いかと思います。言語はJavaでもVisualStudioでも簡単に使える環境で良いと思います。体感するためには数本書いた方が良いと思います。「プログラムを書く」という行為を体験するだけでも、何かのヒントになるかも知れません(確約はできませんが)。
またファイルI/Oが出来たのであれば、メモリアロケーションまで実践してみるとさらに良いかもしれません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/02 10:13

    返信遅くなり申し訳ございません。本当にすばらしい回答、ありがとうございます。今までコメントいただいている内容には無い視点で、ご教示いただきまして、また新しく勉強することができました。
    今現在、実際にプログラムを書いてみています。是非、メモリアロケーションまで実践してみたいと思います。ご丁寧にありがとうございました!

    キャンセル

+3

そもそも、データベースは物理的に、どのようなPCパーツ?(部品)で組み立てられていて、データはどのような手順でどこに保存されるのか

「どのようなPCパーツ?(部品)で組み立てられていて」という疑問になるあたり、コンピュータに関する理解が不足しています。

※補足:データベースがハードウェアのみで構成されている訳ではありません。データベースを理解する上で優先的に理解すべきものは物理的な構成より、どのように管理されているかと云う論理的な内容の方です。
質問の内容からはまだ入口に立っているというレベルでしょうから、物理的な構成を気にするのはまだまだ先の話だと思います。

このような疑問に対する回答が掲載されている書籍、サイトなどをご教示いただけると幸いです!

データベースを管理しているものがソフトウェアであることは、インストールを介するということで理解できます。
実際に環境を自分で作成されることをやられていないなら、色んな情報を入手する事より先に、学習サイトなどで手を動かしてみた方が理解が進むと思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/09/27 12:23

    ご丁寧な回答、誠にありがとうございます。確かにそうかもしれません。どうしても手を動かす度に、そもそもの大前提が気になってしまい、身が入らない状況が続いておりますが、自分で作成してみると分かることも確かにあるかと思います。ご指摘、ありがとうございました!

    キャンセル

+3

そもそも、データベースは物理的に、どのようなPCパーツ?(部品)で組み立てられていて、データはどのような手順でどこに保存されるのか

データベースでどのようにデータを保存しているのか?
を知ろうとすると、それぞれのデータベースが高速レスポンスをたたき出すためにしのぎを削っている企業秘密的なお話に突き当たってしまうかと…
は言いすぎですが、基本原理を押さえて「それを大量に保存できて、高速に検索できる」と考えれば良いと思います

基本原理を可視化するにはEXCELのシートで実現する事も出来ますし、紙資料をファイルに綴じて棚にいれる…などでもできます。
ためしに100枚の履歴書を分かり易くファイリングして棚にいれる作業をすれば(たとえば名前順に並べて、生年月日の年ごと、月ごとに色分けしてすぐわかるように)
「これが10万枚あっても命令一発で並べてしまってくれて、あっという間にひっぱり出せるのか…」
とありがたみを痛感できますよ
それを、コンピュータ内部で検索しやすく工夫して保存しているんです

何がどう動いて、この文字情報はどのように変換され、最終的にどのような部品にどう格納される?のか

データベースを組み立てているのは原則コンピュータ(パソコン、もしくはサーバ)なので、答えは記憶装置です。最近はSSDやオンメモリもあるのでディスクにカリカリ…とは限りませんが
仮にこれがクラウドだとしても「その先」に用意されているサーバが見えない所で同様の事をしてくれていると考えて良いかと思ってます

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/02 10:21

    ご丁寧な回答誠にありがとうございます!わかりやすい例えでとても勉強になりました!なんかすごい沢山の方に回答いただいていて、みなさま違う視点から回答してくださってることに感謝です。。
    クラウドだとしても、同様の事を〜と言う点、とても分かりやすい説明をありがとうございます。

    キャンセル

  • 2018/10/02 11:11

    私は突き詰めて考えないタチなので「その先」はあまり細かく考えませんが、「これ以降コンピュータでうまい事やって正しい結果を返してくれるんだな」で済ませています。その辺がPG界隈で良く聞く抽象化の具体例かなぁとほんわり考えてます。フレームワークの中身がイロイロやってくれてバリデーションを肩代わりしてくれるのに通じるんじゃないかなぁ…違うかなぁ…

    キャンセル

  • 2018/10/02 17:35

    ありがとうございます!確かにそう言う思考法もありますね!ただ私の場合は単純に手を動かしていないことからくる理解不足が一番の原因かもしれませんので、いいからやってみようと言う精神で色々ご指摘いただいたことを現在やって見ているところです!

    キャンセル

+3

まずは、
そもそもファイルシステムって何で出来ていて、どこの何にどう保存されるのでしょうか。。
を考えてみるとよいです。

ファイルシステムでは、*ファイル* を管理しており、ファイルをあつかうためのコマンドもいろいろ用意されています。(cat, ls, cp, rename, del, mkdir ...)

データベースの場合は、 *レコード* 管理するようになったものだと捉えてみてください。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/05 10:47

    ご回答ありがとうございます!ファイルシステムの仕組みの理解がデータベースの理解にも繋がるということですね。非常に分かりやすいご指摘ありがとうございます。早速、調べてみます!

    キャンセル

+2

データベースはソフトウェアです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/09/27 12:10

    ありがとうございます。そもそもの考え方が違っていました。

    キャンセル

+1

 はじめに

以下の内容は調べながら書いているので、正しいかどうかはわかりません。
基本情報技術者試験等の資料を参考にすれば、各要素技術の広い知識は取得できるかもしれませんし、できないかもしれません。

 定義

データベース(英: database, DB)とは、検索や蓄積が容易にできるよう整理された情報の集まり。 出典:Wikipedia

目的は上記の通り、検索と蓄積のため、データベースという単語では、幅広いジャンルのソフトウェアを指します。
ここでいうジャンルとは、RDBMS(リレーショナルデータベース)やNoSQL(RDBMS以外のデータベース管理システム)、Excel等でのデータ蓄積を指します。

 データの保存や保持

取り急ぎ、RDBMSに限定して話を進めると、一般的(本当かどうかは知らない)には、次の階層になります。 

  • 外部スキーマ: 概念スキーマから取り出した必要なデータ(ビューや表示されているデータ)
  • 概念スキーマ:概念モデル(ERモデル): データの要素およびデータ同士の関係(テーブルに相当)
  • 概念スキーマ:論理モデル(リレーショナルモデル): 属性・組・値等の定義(SQLに相当?)
  • 内部スキーマ: 実際に吐き出すデータ形式(物理モデル)

参考:データベースの3層抽象化について - Qiita
参考:データモデリング - 高知工科大学 Xiangshi Ren 教授レクチャー資料

dogsというテーブルは概念スキーマにあたって、
行というのは、概念スキーマの論理モデルにあたるように思います。

通常、RDBMSを使うときは、既製品を使うため、内部スキーマを見ることはほとんどありません。
既製品にはそれぞれ、目的を持った機能があり、その目的と一致するものを選んでから使用することなります。
既製品の目的によって、内部スキーマは大きく異なります。
なので、MySQLにおいて、同じ名前なのにストレージエンジン(MyISAM/Innodb等)が異なれば、内部スキーマは全く違うものになります。

 関連文献

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/03 11:14 編集

    ご回答誠にありがとうございます。ある程度知識がある方であれば、なるほど!となる内容かもしれませんが、まだ初級者の私は、ご投稿いただいた内容の主旨を理解するのに、少し学習が必要みたいですので、貼付いただいたリンクなどを確認し、理解を深めます!ありがとうございました!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.13%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問