【PostgreSQL】OSS-DB silver合格体験記
OSS-DB silverの試験に合格したので今回は合格体験記として情報をまとめようと思います。
執筆時点で最新版のver2.0の情報になります。
対象はPostgreSQL 10と11ですが、執筆時点での最新版は12.3です。(13はまだプレビュー状態)
参考書の紹介
これはいいです。バイブル徹底攻略OSS-DB Silver問題集[Ver.2.0]対応
- 作者:SRA OSS Inc. 日本支社 正野 裕大
- 発売日: 2020/04/17
- メディア: 単行本(ソフトカバー)
出題範囲と勉強の重きの置き方
出題範囲と重要度は公式サイトで公開されています。以下をご参照ください。
https://oss-db.jp/outline/silver
今回は受験した感想をもとに独断と偏見で個人的重要度を付けてみます(´∀`)
私の正答率は以下でした。
■総得点 92点(合格ライン64点)
■各分野毎の正答率 (出題割合)
一般知識:100% (8/50問)
運用管理:88% (21/50問)
開発/SQL:92% (11/50問)
一般知識
運用管理
インストール方法
■重要度: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 CSVでCSV形式で出力できることは結構重要。デフォルトだと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が出たら捨てるというふうに割り切ってもいいのかなって思います。
対策期間
PostgreSQLの学習期間は実質4か月くらいだと思います。レプリケーションやパフォーマンスチューニング等のGoldの試験範囲の含めて勉強していたので、Silverの試験対策として特化した学習期間(問題集解いている期間)は3週間くらいだと思います。
(前提としてOracleのエンジニアとしての経験ありなので、SQLやDB周りの基礎知識はある状態でしたのでご参考に)
最後に
今度は半年後くらいにGoldを受験してみようかと思います…|・`ω・)