質問したいこと
私は今、データベースの勉強をしています。
ネットや書籍を中心に情報を収集しております。RDBや、DBS、SQLなど、様々な知識を学ぶことはできるのですが、1つ私の中で大きな疑問があり、その疑問については、どの媒体も説明していないように感じたので、ここで質問させていただきます。
その疑問は、「そもそも、データベースは物理的に、どのようなPCパーツ?(部品)で組み立てられていて、データはどのような手順でどこに保存されるのか」という内容です。
保存されたデータをどのように呼び出すか、データベースをどのように管理するか、などと言った知識については本当に多くの説明がありますが、例えば私が、ローカルの環境でmysqlを立ち上げ、dogsというテーブルを作成し、{name: ポチ, age: 3, owner: 佐藤さん}のようなデータを保存した場合には、何がどう動いて、この文字情報はどのように変換され、最終的にどのような部品にどう格納される?のか、といった根本的な流れに対する説明は無いように感じます。
(ローカルの環境ではなく、例えばAWSにEC2アカウントを作成し、RDSを使用した場合、RDSに上記のdogsテーブルとデータを登録した場合はローカルとどう動きが異なるのかも気になります)
恐れ入りますが、この私の疑問にご回答いただけますと幸いです。また、もし可能であれば、私はこのような「そもそも」の疑問をいつももってしまうので、このような疑問に対する回答が掲載されている書籍、サイトなどをご教示いただけると幸いです!
何卒よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答10件
0
データベース(管理システム)もプログラムですから
今回の質問には「プログラムはなぜ動くのか」あたりの
本を読んで基礎的な知識を学習されるのがよろしいかと。
以下は余談ですが…
いまのデータベースはほぼおまかせで導入しても動くように
なっていますが、逆に言うと細かな情報は隠ぺいされてる
ということもできますね。
昔の構造型データベースならば、物理的な構成/論理的な構成/
インデックスやキーに関する情報などこまごまとした
コンフィグレーションが必要でした。
翻って「いま」そういう情報が必要な人といえば
データベース管理システム自体を作る人か
おまかせでは解決できない問題を抱えている人でしょう。
そのへんの人が操る魔術的な秘法を知りたいのだ!
と期待されているならば申し訳ありませんが
概して地味な技術の積み上げでしかありませんよ?
例えば華やかなアスリート達も同様に、日々の地味な
練習が試合での華やかな活躍へとつながっている訳です。
これら「地味な部分」を楽しめるか否かが適性なのかなあ
などと思ったりします。
投稿2018/09/27 03:12
総合スコア7460
0
ベストアンサー
「SQLの世界」では、ハードウェアは抽象化されていますので、動作をさせる上では実態を考える必要はありません。データの実体は、多くの場合「ディスクに置かれたファイル」ですが、永続性より速度を重視する、全データをメモリに置いたインメモリデータベースも存在します。
ただし、読み書きする物理的な速度からの制約はありますので、極限までチューニングする場合はハードウェアの性能まで考える必要があります。
投稿2018/09/27 02:05
総合スコア145930
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/27 03:18
2018/09/27 03:33 編集
2018/09/27 03:46
0
回答になっているかわかりませんが、私もそもそも論は割りと気になるタチですので、共感できます。
コンピュータの中で、データがどのように動いて、どう変わっていくのかを知るには、この「コンピューター&テクノロジー解体新書」がとてもお勧めです。あとはどなたかの回答になったとおり、DBはソフトウェアですので、根幹を知りたければ本書をお勧めします。
http://amzn.asia/d/jcAwA3r
投稿2018/10/02 05:06
総合スコア30
0
そもそも、データベースは物理的に、どのようなPCパーツ?(部品)で組み立てられていて、データはどのような手順でどこに保存されるのか
「どのようなPCパーツ?(部品)で組み立てられていて」という疑問になるあたり、コンピュータに関する理解が不足しています。
※補足:データベースがハードウェアのみで構成されている訳ではありません。データベースを理解する上で優先的に理解すべきものは物理的な構成より、どのように管理されているかと云う論理的な内容の方です。
質問の内容からはまだ入口に立っているというレベルでしょうから、物理的な構成を気にするのはまだまだ先の話だと思います。
このような疑問に対する回答が掲載されている書籍、サイトなどをご教示いただけると幸いです!
データベースを管理しているものがソフトウェアであることは、インストールを介するということで理解できます。
実際に環境を自分で作成されることをやられていないなら、色んな情報を入手する事より先に、学習サイトなどで手を動かしてみた方が理解が進むと思います。
投稿2018/09/27 02:30
編集2018/10/02 10:09総合スコア25300
0
基本的には他の方が回答されているので補足です。
データベースのソフトウェアを動かすのは、普通のPCでも構いませんが、信頼性や性能の向上させるために専用設計になったハードウェアもあります。
一般的なPCで何も考えずにデータベースを作った場合、HDD内にファイルが出来て、その容量が増えていきます。
データベースと一言に言っても、似た言葉が多くて混同しやすいかもしれませんね(データベースサーバ、データベースソフト、データベースファイル)
投稿2018/10/01 23:40
総合スコア74
0
こんにちは
その疑問は、「そもそも、データベースは物理的に、どのようなPCパーツ?(部品)で組み立てられていて、データはどのような手順でどこに保存されるのか」という内容です。
DBに属する全ての情報は、一旦メモリーを介してディスク上に保存されます。読み込みはその逆となりますが「手順」というところに関してはACIDを保証するための複数の膨大なプログラムになります。恐らくこの部分の説明が記載されていたとしても、理解することは難しいでしょう。参考書はDBの概念や部分的構造を解説することで、データの取り扱いやDB設計・運用ができるよう手引きすることが目的で書かれているものだと思います。
このような疑問に対する回答が掲載されている書籍、サイトなどをご教示いただけると幸いです!
この問いに最も答えるべきと思いましたが、残念ながらよいコンテンツが見つけられませんでした。
自分の経験上思い付くことは、単純なファイルの読み書きを体感するために、実際にプログラムを書かれてみてはどうでしょうか。参考書を探しても良いし、コンテンツを探しても良いかと思います。言語はJavaでもVisualStudioでも簡単に使える環境で良いと思います。体感するためには数本書いた方が良いと思います。「プログラムを書く」という行為を体験するだけでも、何かのヒントになるかも知れません(確約はできませんが)。
またファイルI/Oが出来たのであれば、メモリアロケーションまで実践してみるとさらに良いかもしれません。
投稿2018/10/02 00:42
総合スコア1339
0
まずは、
そもそもファイルシステムって何で出来ていて、どこの何にどう保存されるのでしょうか。。
を考えてみるとよいです。
ファイルシステムでは、ファイル を管理しており、ファイルをあつかうためのコマンドもいろいろ用意されています。(cat, ls, cp, rename, del, mkdir ...)
データベースの場合は、 レコード 管理するようになったものだと捉えてみてください。
投稿2018/10/04 12:20
編集2021/02/22 00:00総合スコア22324
0
そもそも、データベースは物理的に、どのようなPCパーツ?(部品)で組み立てられていて、データはどのような手順でどこに保存されるのか
データベースでどのようにデータを保存しているのか?
を知ろうとすると、それぞれのデータベースが高速レスポンスをたたき出すためにしのぎを削っている企業秘密的なお話に突き当たってしまうかと…
は言いすぎですが、基本原理を押さえて「それを大量に保存できて、高速に検索できる」と考えれば良いと思います
基本原理を可視化するにはEXCELのシートで実現する事も出来ますし、紙資料をファイルに綴じて棚にいれる…などでもできます。
ためしに100枚の履歴書を分かり易くファイリングして棚にいれる作業をすれば(たとえば名前順に並べて、生年月日の年ごと、月ごとに色分けしてすぐわかるように)
「これが10万枚あっても命令一発で並べてしまってくれて、あっという間にひっぱり出せるのか…」
とありがたみを痛感できますよ
それを、コンピュータ内部で検索しやすく工夫して保存しているんです
何がどう動いて、この文字情報はどのように変換され、最終的にどのような部品にどう格納される?のか
データベースを組み立てているのは原則コンピュータ(パソコン、もしくはサーバ)なので、答えは記憶装置です。最近はSSDやオンメモリもあるのでディスクにカリカリ…とは限りませんが
仮にこれがクラウドだとしても「その先」に用意されているサーバが見えない所で同様の事をしてくれていると考えて良いかと思ってます
投稿2018/10/02 01:02
総合スコア66
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/02 01:21
2018/10/02 02:11
2018/10/02 08:35
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
総合スコア223
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/27 03:29