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

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

新規登録して質問してみよう
ただいま回答率
85.37%
データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

データベーススペシャリスト

データベーススペシャリスト試験 (DB)は、IPA 独立行政法人 情報処理推進機構の実施している国家資格です。

Q&A

解決済

10回答

20036閲覧

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

Daimian

総合スコア53

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

データベーススペシャリスト

データベーススペシャリスト試験 (DB)は、IPA 独立行政法人 情報処理推進機構の実施している国家資格です。

9グッド

19クリップ

投稿2018/09/27 01:53

質問したいこと

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

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

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

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

choco_mint, tsq49287, Yoyai_LAC, igrep, daihi, fort-space, yuyu127, kszk311, gena7👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答10

0

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

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

投稿2018/09/27 03:12

takasima20

総合スコア7460

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Daimian

2018/09/27 03:29

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

0

ベストアンサー

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

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

投稿2018/09/27 02:05

maisumakun

総合スコア145930

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2018/09/27 02:15

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

2018/09/27 03:18

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

2018/09/27 03:33 編集

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

2018/09/27 03:46

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

0

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

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

投稿2018/10/02 05:06

yusuke-haneda

総合スコア30

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Daimian

2018/10/02 08:34

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

0

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

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

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

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

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

投稿2018/09/27 02:30

編集2018/10/02 10:09
sazi

総合スコア25300

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Daimian

2018/09/27 03:23

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

0

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

投稿2018/10/01 23:40

ttb

総合スコア74

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Daimian

2018/10/02 01:05

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

0

こんにちは

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

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

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

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

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

投稿2018/10/02 00:42

BlueMoon

総合スコア1339

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Daimian

2018/10/02 01:13

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

0

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

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

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

投稿2018/10/04 12:20

編集2021/02/22 00:00
katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Daimian

2018/10/05 01:47

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

0

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

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

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

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

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

投稿2018/10/02 01:02

imprezza

総合スコア66

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Daimian

2018/10/02 01:21

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

2018/10/02 02:11

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

2018/10/02 08:35

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

0

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

投稿2018/09/27 01:55

Zuishin

総合スコア28662

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Daimian

2018/09/27 03:10

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

0

はじめに

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

定義

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

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

データの保存や保持

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

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

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

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

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

関連文献

投稿2018/10/02 16:36

testset

総合スコア223

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Daimian

2018/10/03 02:14 編集

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問