データベース技術調査ブログ

LinuxやPostgreSQL、Oracleデータベース、AWSの知識をアウトプットしていきます

【PostgreSQL】OSS-DB silver合格体験記

OSS-DB silverの試験に合格したので今回は合格体験記として情報をまとめようと思います。

執筆時点で最新版のver2.0の情報になります。
対象はPostgreSQL 10と11ですが、執筆時点での最新版は12.3です。(13はまだプレビュー状態)

参考書の紹介

これはいいです。バイブル

徹底攻略OSS-DB Silver問題集[Ver.2.0]対応

徹底攻略OSS-DB Silver問題集[Ver.2.0]対応

これは最低でも2周はしましょう。すべて解説見ずに説明できるまで勉強すれば受かったも同然です。

出題範囲と勉強の重きの置き方

出題範囲と重要度は公式サイトで公開されています。以下をご参照ください。

https://oss-db.jp/outline/silver

今回は受験した感想をもとに独断と偏見で個人的重要度を付けてみます(´∀`)

私の正答率は以下でした。
■総得点 92点(合格ライン64点)
■各分野毎の正答率 (出題割合)
 一般知識:100% (8/50問)
 運用管理:88% (21/50問)
 開発/SQL:92% (11/50問)

一般知識

OSS-DBの一般知識

■重要度:4
■出題範囲
PostgreSQLの機能全般、OSS-DBおよびOSS一般のライセンス、OSS-DBのコミュニティ、活動内容、参加方法など
メジャーバージョン / マイナーバージョン
リリースサイクル / サポートポリシー / バグ報告

★個人的重要度:2 (余裕がある場合は勉強する)
覚えておいて実務に役立つかと言うと直接は役に立つことはあまりないかも…まぁ、知っていて損はないので勉強する余裕があればするべきなのは間違いない。
知っておくと確実に得点に繋がるので問題集に載っている問題は脊髄反射で答えられるにしておくと資格試験対策としては有用です(^^♪


リレーショナルデータベースに関する一般知識

■重要度:4
■出題範囲
リレーショナルデータモデルの基本概念
データベース管理システムの役割
SQL に関する一般知識
SQLの 分類 (DDL / DML / DCL)
データベースの設計と正規化

★個人的重要度:6(DBAとしての基礎知識)
新しく何か学んだ感はないですが、DBAとして会話するために必要な最小限求められる知識だと思います。DBAに関わらすシステム開発で知っておくべき知識ですね(´∇`)

運用管理

インストール方法

■重要度:2
■出題範囲
initdbコマンドの使い方
データベースクラスタの概念と構造
テンプレートデータベース
initdb
pg_ctl initdb
PGDATA
template0
template1

★個人的重要度:6(特にinitdbで指定できる要素は押さえておきましょう)
これはPostgreSQL扱うDBAなら知っておくべき要素だと思います。ロケールとか大事です。試験ではチェックサムの実行をするかどうか設定できることも問われてちょっと自信なかったのですが、ドキュメント見た記憶があるな…ってなったのでドキュメントは仲良くなりましょう( *˙ω˙*)و グッ!

標準付属ツールの使い方

■重要度:5
■出題範囲
データベース管理用コマンドの使い方
pg_ctl
createuser
dropuser
createdb
dropdb
psql
メタコマンド

★個人的重要度:6(pg_ctlとかpsqlは知っておかないと困るレベル)
createuserやdropuser、createdb、dropdbはSQLの方を使うのであまり使わないのですが、オプションまで覚えておくといいです|ω・)

設定ファイル

■重要度:5
■出題範囲
postgresql.confに関する以下の4項目
 - 記述方法
 - 接続と認証
 - クライアント接続デフォルト
 - エラー報告とログ取得
pg_hba.confの設定方法
SET/SHOWの使い方
postgresql.conf
pg_hba.conf
pg_ctl reload/restart
pg_settings

★個人的重要度:8(設定周りは普通に大事)
普通に設計の基本的なところを問われるので、実務でちゃんと扱っていれば余裕です(^^♪
特にログ周りはよく必要になるところなので主要な設定は押さえておくといいです!

バックアップ方法

■重要度:7
■出題範囲
各種バックアップコマンドの使い方
ファイルシステムレベルのバックアップとリストア
ポイントインタイムリカバリ(PITR)の概念と手順
トランザクションログ(WAL)とWALアーカイブ
pg_start_backup() / pg_stop_backup()
COPY文(SQL)、¥copyコマンド(psql)の使い方
pg_dump
pg_dumpall
pg_restore
psql
pg_basebackup
PITR
recovery.conf
COPY
¥copy

★個人的重要度:9(どれも大事っす)
どれも大事ですが、pg_basebackup周りは細かいドキュメントの記載まで読んでおかないとちょっと判断に迷う問題ありました。COPY文と\copy文でクライアント側とサーバ側でファイルを指定するときの出力先が違うので注意が必要です。
copy文のオプションで FORMAT CSVCSV形式で出力できることは結構重要。デフォルトだとtsvになるので。そこも把握しておきましょう(^^)


基本的な運用管理作業

■重要度:7
■出題範囲
PostgreSQLの起動・停止方法
データベースロール / ユーザの概念
データベースロール / ユーザの追加・削除・変更方法
VACUUM、ANALYZEの目的と使い方
自動バキュームの概念と動作
システム情報関数
情報スキーマとシステムカタログ
テーブル単位の権限(GRANT/REVOKE)
pg_ctl start / stop
CREATE/ALTER/DROP ROLE/USER
VACUUM
ANALYZE
vacuumdb
autovacuum
current_user
version
information_schema
GRANT
REVOKE

★個人的重要度:7(普通に運用や設計で必要な作業をしていると見につくはず)
なぜか問題集にversion関数がversion()でないといけないということが問題になっているなと印象に残っていたらそれとほぼ同じ問題が出てきました。それって問われる意味ある?って気がするのですが…(´△`)
current_database()とかcurrent_user、current_timestamp、current_date辺りは知っておくといいでと思います。φ(..)メモメモ
9.25. システム情報関数


開発/SQL

SQLコマンド

■重要度:13
■出題範囲
SELECT 文
INSERT 文
UPDATE 文
DELETE 文
データ型
テーブル定義
インデックス
ビュー
マテリアライズドビュー
ルール
トリガー
シーケンス
スキーマ
テーブルスペース
パーティション
関数定義 / プロシージャ定義
PL/pgSQL
(キーワードは割愛)

★個人的重要度:10(まぁDB扱うエンジニアとしてはSQLかけて当たり前。一般常識ですよねってというレベルでないものがたまに混じってくる)
ちゃんと問題集解けるようにしておけば合格ラインは超えられる…!
全て覚えるのはやや厳しいと思うので問題集にも出てこなくて、実務でも扱ったことのないSQLが出たら捨てるというふうに割り切ってもいいのかなって思います。

組み込み関数

■重要度:2
■出題範囲
集約関数
算術関数
演算子
文字列関数
文字列演算子 / 述語
時間関数

★個人的重要度:2(文字列比較がややこしいので注意)
LIKEはよくよく使うのでわかりやすいですが、 ~ が少し違うので間違えやすいところかなと思います。大文字小文字の区別まで細かく押さえておかないと正解できません…(ここ間違えたと思われる)

トランザクションの概念

■重要度:1
■出題範囲
トランザクションの構文
トランザクション分離レベル(リードコミッティド、リピータブルリード、シリアライザブル)
LOCK 文
行ロックとテーブルロック
デッドロック
BEGIN
COMMIT
ROLLBACK
SAVEPOINT
SET TRANSACTION
LOCK TABLE
SELECT FOR UPDATE / SHARE

★個人的重要度:2(常識的な問題ばかり)
savepointとかトランザクションが失敗した時の動作が問われたかなという印象です。常識レベルかな…

対策期間

PostgreSQLの学習期間は実質4か月くらいだと思います。レプリケーションやパフォーマンスチューニング等のGoldの試験範囲の含めて勉強していたので、Silverの試験対策として特化した学習期間(問題集解いている期間)は3週間くらいだと思います。
(前提としてOracleのエンジニアとしての経験ありなので、SQLやDB周りの基礎知識はある状態でしたのでご参考に)

最後に

今度は半年後くらいにGoldを受験してみようかと思います…|・`ω・)