この記事は「データベーススペシャリスト資格に興味はあるが、どのようなものか?どう学ぶのか?」という方向けに、具体的な内容と私自身の挑戦ログをお伝えする。学び中の方や、これから学ぼうとされる方の参考になれば幸いだ。今回は知識およびSQL(確認ドリル)について書く。(SQLはGoogle Big Queryに準拠)
また、考察においてキャリアコンサルタント資格の挑戦ログについても記述する。
知識(物理設計と索引)
物理設計とは
- ハードディスクへのアクセスなど、物理的なものまで含めた設計。
- 作業内容としては「システム資源の割り付け(どのデータをどの領域に保存するか)」「テーブルの物理的な格納方式(容量やアクセス時間)」「索引(高速な検索)」「パーティショニング」など。
- 共通して言えることは、ディスク(HDD)は遅いということ。なぜなら機械的にディスクを動かす仕組みなので、サーチタイム(回転待ち時間)やシークタイム(位置決め時間)などがミリ秒単位でかかる。(メモリはナノ秒単位)
- よって、できるだけHDDのまとめた場所から読み込み、ディスクバッファ(メモリ)に保存しておく。また、書き込むときもディスクバッファに貯めて置き、まとめてHDDに書き込む。
索引(インデックス)とは
- アクセスを高速化するための工夫。索引があれば、それを見ることで目的の情報があるページに直接的にアクセスできる。
- なお、索引が無い場合、目的の情報は全件検索(線形検索)で、先頭から順に1つずつ照合して探すことになる。
- 索引は「ディスクのアドレスがわかる」ようなイメージ。
- ただし、行の挿入・削除・更新が頻繁な項目(列)は索引は向かない。(イメージとして、500ページ書籍の真ん中にページを挿入したら、索引は全て作り直しになる)
索引の種類
- まず、索引は列について付けるもの。たとえば社員表における社員№であったり、社員№と住所の組み合わせであったり。
- 主索引は、主キーに対して付ける(付く)索引。自動で付くDBMSが多い。一方、副次索引は主キー以外の列に対して付ける索引。また、複合索引(連結索引)は、複数の列を連結したものに付ける索引。
- ユニークインデックスは、同値が許されないもので、たとえば主索引はこれに該当する。非ユニークインデックスは、同値が許されるもの。
- クラスタ化インデックスは、索引順にデータが格納されているもの。非クラスタ化インデックスは、そうでないもの。
9月22日復習時追記
- 索引は午後の頻出問題。「索引・性能」として過去問ベースで確認しており、対策済。
問題093(SQL確認ドリル)
問題文
- salesテーブルから、もっとも高額な注文(order_id)とその注文の販売金額(revenue)の合計(sum_rev)を取得してください。
- 結果テーブルのカラムは「order_id」と「sum_rev」の2カラムとします。
group by, sum, order by, limitのおさらい
- 同一のorder_idが複数行にまたがる場合があるので、”もっとも高額な注文”はgroup byで束ねる必要がある。
- そのうえで、販売金額の合計はsumで求める。
- “もっとも高額”の部分は、先ほど求めた合計値順に並べ、最初の1つを表示する。
- 具体的には以下のとおり。
考察
- データベーススペシャリスト資格について。今回は知識(物理設計と索引)の復習を行い、HDDの遅さを工夫する索引の基礎について学習した。また、SQLの確認ドリル(salesテーブルのうち、もっとも高額な注文と、その注文の販売金額合計を取得)を解いた。
- 考察。キャリアコンサルタント資格について、今回は主に”役割”を学んだ。個人に対するワークキャリア(仕事)の相談や支援だけでなく、ライフキャリア(生涯を通じた、家族や学びなど含めた人生)まで視野に入れる点は興味深い。私自身も取り組みたいテーマだったので非常に熱意が高まった。
考察のシンプル化と英訳(練習中)
- I think it’s important to design my whole life, with basing many roles.
- (多くの役割をベースに、自分の人生全体をデザインすることが重要だと思います)
参考資料
- 集中演習 SQL入門/木田和廣/株式会社インプレス
- 2022年度版 ALL IN ONE パーフェクトマスター データベーススペシャリスト/TAC
コメント