Open3

『Database Design and Implementation』読書メモ

ピン留めされたアイテム
SayamaSayama

書籍情報

Database Design and Implementation: Second Edition / Edward Sciore [著]
February 28, 2020 / Springer [出版]

本書の特徴

  • Derby という Java によって実装された Relational Database Management System (RDBMS) をベースにして、学習目的のために簡略化した SimpleDB という RDBMS を実装することで、Database Engine の内部構造を学ぶことができる。
  • 各章の章末には、よりアドバンスドなトピックについての課題や、熱意ある読者のための読書案内が記載されている。

追記予定

関連情報

SayamaSayama

Chapter 1. Database Systems

  • Database System が満たすべき機能
    • データが永続的に保存されること。障害が発生してデータが失われてしまうと、データベースは意味をなさない。
    • データの共有されること。同時に多くのユーザーがデータを利用できること。
    • データの整合性や正確性が保証されること。データが信頼できないものであれば、データベースは意味をなさない。
    • データが非常に大きくなってもそれに耐えること。そのため、データベースは効率的にデータを管理することができる必要がある。
    • データベースは使用性が高く、ユーザーが簡単にデータを利用できること
  • Derby という Java によって実装された Relational Database Management System (RDBMS)
    • Derby は、Java で書かれた RDBMS 。Derby は、Apache Software Foundation によって開発されている。
    • Derby は標準的は SQL の機能を実装しているため、ソースコードは読みづらく理解し難いので本書では簡略化した RDBMS である SimpleDB を実装する。
  • データベースアプリケーションは、2つの独立した部分からなる
    • 1つは UI であり、もう1つは データベースにアクセスするためのコード (Database Engine) である。
    • 2つの独立した部分に分けておくことで、柔軟性の高いアプリケーションを作ることができる。
    • 例えば、同じ UI であるが、異なるデータベースエンジンを使用できたり、あるデータベースエンジンを使うための UI を複数用意できたりする。
  • JDBC とは
    • Java 用のデータベース接続や操作のための API で、データベースエンジンとの通信を確立したり、SQL 文を送信し、結果を受け取ったりする。
  • UI とデータベースエンジンの接続には 埋め込まれたもの (embedded) と サーバーベース (Server-Based) のものがある
    • 埋め込まれたものは、データベースエンジンがアプリケーションの一部として動作する。アプリケーションが終了すると、データベースエンジンも終了する。
    • サーバーベースのものは、データベースエンジンがアプリケーションとは別のプロセスとして動作する。アプリケーションが終了しても、データベースエンジンは動作し続ける。
  • SimpleDB という RDBMS
    • 本書で実装する SimpleDB は多くの機能を犠牲にする代わりに、非常にシンプルな実装で理解しやすい。Derby と同じく Java で書かれています。
    • 例えば以下のような機能になっています。
      • AS キーワードを使ったフィールド名のリネーム機能はない。
      • GROUP BY や ORDER BY はサポートされていない。
      • AND 以外の論理演算子はサポートされていない。
      • ネストしたクエリはサポートされていない。
      • 算術演算子や組み込み関数はサポートされていない。
      • * によるフィールド名の省略はサポートされていない。
      • NULL 値はサポートされていない。
      • 明示的な JOIN はサポートされていない。
      • UNION キーワードはサポートされていない。
      • INSERT 文は明示的な値のみをサポートしている。つまり、クエリによる挿入はサポートされていない。
      • UPDATE 文は SET 句において、1 つの代入のみをサポートしている。