この記事は「データベーススペシャリスト資格に興味はあるが、どのようなものか?どう学ぶのか?」という方向けに、具体的な内容と私自身の挑戦ログをお伝えする。学び中の方や、これから学ぼうとされる方の参考になれば幸いだ。今回は知識およびSQL(確認ドリル)について書く。(SQLはGoogle Big Queryに準拠)
知識(DBMSとトランザクション)
データベース管理システム(DBMS)とは
- データベースとは、データのまとまり。
- DBMSとは、データベースを構築・管理するためのミドルソフトウェア。一般的にはDBサーバに置かれることが多い。
- アプリからデータベースを参照するときは、アプリケーションサーバからDBサーバにアクセスして行うことになる。
DBMSの機能
- まず、SQL実行機能を持つ。これはselect文のようなデータ操作言語(DML)と、create文のようなデータ定義言語(DDL)からなる。
- 次に、トランザクション制御機能を持つ。これは同時実行制御、コミットメント制御、障害回復制御などだ。
- 最後に、データ機密保護機能を持つ。これは認可制御と暗号化からなる。認可制御についてはアクセス権を付与するgrant、はく奪するrevokeなどがある。
- このうち主となるのは、トランザクション制御である。
トランザクションとは何か
- トランザクションとは、「途中で分けることができない一連の処理」のこと。やるなら最後までやる。やらないなら一切やらない。
- たとえば「振込トランザクション」として、トムからタロウに10,000円振り込むとき。①トムの口座残高から10,000円マイナスする。②タロウの口座残高を10,000円プラスする。
- このとき、処理①だけやって終わったら、10,000円マイナスされるだけなのでバグ。動かさない方が良い。
- このような、all or nothingの特性を原子性(atomicity)という。
- トランザクションはこれ以外にも、一貫性(consistency)、独立性(isolation)、持続性(durability)などの特性を持つ。頭文字を取ってACIDと言う。
- 一貫性とは、バグなく正しく動くこと。独立性とは、単独はもちろん、同時実行しても正しく動くこと。持続性とは、システム障害に耐えること。
独立性と同時実行制御の必要性
- 独立性の重要性を示す例として、同時更新が挙げられる。
- たとえば口座残高が50,000円のとき、100,000円の入金トランザクションと、20,000円の出金トランザクションを同時に動かすとする。
- ここで同時実行制御がされていないと、入金トランザクションが150,000円と更新したあと、出金トランザクション側が30,000円と上書き更新してしまうロストアップデートが起きてしまう。
9月22日復習時追記
- ACID特性関連は、午前2では頻出問題。TACテキストおよび過去5年分解いており、対策済。
- また、午後については「トランザクション制御」として過去問対策済。
問題087(SQL確認ドリル)
問題文
- customersテーブルで、会員登録日(register_date)がnullの顧客の人数を求めてください。
- 結果テーブルのカラム名は「users」とします。
count(distinct 列名),whereのおさらい
- count(distinct 列名)は指定した列のユニークな値の数を取得できる。
- whereは条件の絞り込みを行う。今回は”null”なので”is null”を用いる。
- 具体的には以下のとおり。
考察
- データベーススペシャリスト資格について。今回は知識(DBMSとトランザクション)の復習を行い、データベースの処理を正しく行うための大事な特性を学習した。また、SQLの確認ドリル(customersテーブルで会員登録日がnullの顧客の人数)を解いた。
- 考察。生活資金を稼ぐ仕事(ライスワーク)と、生きがいを見出す仕事(ライフワーク)はバランスが大事だと思う。生活基盤が整っているからこそ、自分らしさを模索できるからだ。書籍「アルケミスト/パウロ・コエーリョ/KADOKAWA」における、スプーンの油をこぼさずに素敵な庭を見て回る話を思い出した。
考察のシンプル化と英訳(練習中)
- I think happiness point is enjoying “life-work” with keeping “rice-work”.
- (幸せのポイントは、ライスワークを続けながら、ライフワークを楽しむことだと思います)
参考資料
- 集中演習 SQL入門/木田和廣/株式会社インプレス
- 2022年度版 ALL IN ONE パーフェクトマスター データベーススペシャリスト/TAC
コメント