RailsのdefaltDBについて(SQLite)
データベースについて
railsで使用してきたDBについてふり帰っていこうと思う。
基本
-
データを格納する保存先のことをデータベースという。
⇒ここにはたくさんのデータが格納されているため整理する必要がある。
⇒テーブルで管理
<テーブルとは>
データベースの中でデータを”テーブル”として分類し、整理しているもの。
- column (カラム) : テーブルの縦1列のこと
- record (レコード) : テーブルの横1行のこと
データベースの種類について
データベースの種類 | 説明 | 例 |
---|---|---|
関係データベース(RDB) | データをテーブルの形式で表現し、テーブル間の関係を利用してデータを結合・操作する方法。 | Oracle Database, MySQL, PostgreSQL、SQlite |
階層型データベース | データを木構造の階層で表現し、親子関係を持つ方法。 | IBM IMS |
ネットワーク型データベース | データをグラフ構造で表現し、複数のレコードが複数の親に関連付けられる方法。 | Integrated Data Store (IDS) |
オブジェクト指向データベース | データをオブジェクトの形式で表現し、オブジェクト指向プログラミングの概念を取り入れた方法。 | ObjectStore, MongoDB |
キーバリューデータベース | データをキーと値のペアとして格納し、キーを使用して値を検索・取得する方法。 | Redis, Amazon DynamoDB |
今日はこの中でも、RDB(RDBMS)について。
リレーショナル型(RDB:複数のテーブルでデータ管理するデータベース)
リレーショナル型のDBは、各データを行と列から構成される表形式で蓄積するのが特徴。
複数の表を関連させることで、複雑なデータを柔軟に整理・保管できるようになります。
<特徴>
- 関連のあるデータ項目が、事前に定義されている
- データ項目は列として表現され、関連のあるデータ項目の集合体が行として
表現されたテーブルが形成される - DBは、テーブル単位にデータを保持し、テーブル間の関係も保持する
- RDBとのやりとりには、SQLが使用される
ex.) Oracle Database, MySQL, PostgreSQL、SQlite
[SQliteとMySQL比較表]
特徴 | SQLite | MySQL |
---|---|---|
データベースのタイプ | ファイルベースの埋め込み型データベース | サーバーベースのクライアント/サーバーデータベース |
ストレージエンジン | SQLiteエンジン | InnoDB、MyISAMなどのエンジン |
データベースサイズの制限 | 2 TB | 制限なし |
メモリ使用量 | 軽量でメモリ効率が高い | メモリ要件が高い |
トランザクションサポート | ACID準拠のトランザクションサポート | ACID準拠のトランザクションサポート |
同時接続数 | 1接続のみ | 多数の同時接続をサポート |
レプリケーションとクラスタリング | サポートされていない | サポートされている |
バックアップと復元機能 | ファイルコピーまたはバックアップツールを使用 | バックアップと復元機能が組み込まれている |
データベース管理ツールの提供 | 標準的なSQLiteシェルツールを提供 | MySQL WorkbenchなどのGUIツール |
使用シナリオ | 軽量なアプリケーションやモバイルアプリケーションに適している | 中〜大規模なWebアプリケーションやエンタープライズシステムに適している |
Railsのdefaltは...SQLite
SQLiteについて
SQLiteは、軽量かつ埋め込み型のリレーショナルデータベース管理システム。
単純なデータベース処理や小規模なプロジェクトに適している。
モバイルアプリケーションや埋め込みシステム、テストや開発環境などで広く使用されている。
-
埋め込み型データベース:
データベースを単一のファイルとして扱うため、別途サーバーをインストールする必要がない。
アプリケーションに直接組み込んで使用することができます。 -
軽量で高速:
SQLiteは非常に軽量であり、小規模なアプリケーションやモバイルアプリケーションに適している。
DBの処理やクエリの実行が迅速であり、リソース消費量が比較的低い。 -
トランザクションサポート:
SQLiteはACID(Atomicity, Consistency, Isolation, Durability)プロパティを持つトランザクションをサポートしています。データの一貫性と完全性を確保するため、複数の操作をまとめて処理することができます。
トランザクション
トランザクションとは
データベースにおいて一連の操作を一つの処理として扱う機能のこと。
トランザクションは、ACIDという性質を持っている。
-
Atomicity(原子性):
トランザクション内のすべての操作が完了するか、すべて失敗するかのいずれかであることを保証する。
つまり、トランザクション内のある一つの操作が失敗した場合でも、他の操作はすべてキャンセルされる。 -
Consistency(一貫性):
トランザクションを実行する前後でデータベースの一貫性が保たれることを保証する。
つまり、トランザクションを実行する前後で、データベースに保存されているデータが整合性を
保つことが求められる。 -
Isolation(独立性):
トランザクションを実行するプロセスが、他のプロセスの操作に影響を与えないように保証する。
つまり、トランザクションの実行中に他のトランザクションが同じデータを変更しても、
それによってトランザクションの処理結果が変わらないようにする。 -
Durability(永続性):
トランザクションが正常に終了した場合、その結果が永続的にデータベースに保存されることを保証する。
トランザクションを使用することで、データベースの処理や操作において、
データの一貫性や完全性を確保することができる。
また、トランザクションの途中で問題が発生した場合には、処理をロールバックして、
一連の操作をすべて取り消すことができる。
今日も満足に作成はできなかったが、声の調子は良くなってきました。
少しずつ、いつものリズムに戻していきます。
Discussion