oss-dbについて
- 資格の一種
- DB関連の知識を問い、主にpostgresqlに関するものである
postgresqlについて
- ライセンス
- 再配布義務なし
- カルフォルニア大学バークレー校発祥のコミュニティドリブン
PostgreSQL Licenseというライセンス- 無保証であることを明記しなくてはいけない
MIT-> 似ているGLP-> 似ていない
- EOF
- 最初のリリースから5年間
- バージョン
- マイナーバージョンのリリースは2、3ヶ月に1回程度
- メジャーバージョンアップは1年に1回程度
- リリースノート
- 英語以外の言語でも記される事がある
- DDL:データ定義言語
CREATE,DROP,ALTER,TRUNCATE
- DML:データ操作言語
SELECT,INSERT,UPDATE,DELETE
- DCL:データ制御言語
GRANT,REVOKE,BEGIN,COMMIT,ROLLBACK
- 正規化
- 第一正規化
- 単純な要素の切り出し
- 第二正規化
- 従属変数を持つ切り出し
- 第三正規化
- 従属変数を持つ切り出しで切り出しもとがキーでないもの
- 第一正規化
- initdb
- デフォルトDBを作成するもの
- localhostで実行できる
- rootで実行できない
-A,--auth==authmethod-D,--pgdata=directory,$PGDATA-E,--encoding=encoding-U,--username=username- template0, template1, postgresが作成できる
- template0
- 削除できない、template1をコピー元にしたくないとき
- template1
- デフォルトのコピー元
- ユーザーが編集可能
- postgres
- デフォルトの接続先
- ファイル構造
$PGDATA- base
- データベースの内容
- global
- 共有データ
- log
- postgresql.conf
- pg_hba.conf
- 認証情報
- postmaster.pid
- base
- 文字コード
- sjisが設定できない
- eucはできる
- pg_controldata
- データベースクラスタの情報を取得できる
- psql
- メタコマンド
\l-> データベース一覧\d,\z,\dp-> テーブル,ビュー,シーケンス\dt-> テーブル一覧\du-> ユーザ一覧\?-> メタコマンド一覧\h-> SQLヘルプ\!-> OSのコマンド
- コマンドプロンプトからファイルを実行
psql --single-step -f 'filename.sql'
-Uをつけないとき- OSのユーザから実行したときとおなじになる
- デフォルトのポート
5432
-c,--command- あとに続くSQLを実行する
-h- hostname
-d- データベース名
-f- バックアップをインプットしてリストア
- メタコマンド
- pg_ctlコマンド
- 概要
sudoのようなもの
- stop
- 実行後はアクセスは禁止される
-m smart,-m s- グレースフルなstop
-m immediate,-m i- ローリバックなしの終了
-m fast,-m f- ロールバックありの終了
-mなしの場合- デフォルトでは
-m fast
- デフォルトでは
-W- 完了なしにterminalにもどる
-t- 最大待ち時間
- デフォルトでは60秒
- kill
TERM- グレースフルなkill
INT- ロールバックありの高速kill
QUIT- ロールバックなしの高速kill
HUP- 設定ファイルのリロード
- reload
- 設定ファイルを読み込む
- ポート番号と最大コネクションサイズについては再起動 or restartでしか反映できない
- 概要
- createuserコマンド
-s,--superuser- スーパーユーザ
-S,--no-superuser- 一般ユーザ
-d,--createdb- データベース作成許可
-D,--no-createdb-r,--createrole- ユーザ作成許可
-R,--no-createrole- ユーザ作成不許可
-P,--pwprompt- パスワードの設定
-l,--login- ログイン権限あり
-L,--no-login- ログイン権限なし
- dropuserコマンド
- デフォルトでは警告なしで削除される
- スーパーユーザーのみ実行可能
- createdbコマンド
-E,--encoding-O,--owner-T,--template
- pg_hpa.conf書式
- ユーザー名に
*を使用できない - 上から順に判定されて、判定条件に入ったらexitする(最後まで判定されない方式)
- 真偽値
- 真
- true, on, yes, 1
- 真
- カンマ区切りで複数の接続先データベースを併記できる
- ユーザー名に
- postgresql.conf書式
- ミシレイニアス
- パラメータは小文字大文字を問わない
log_connections- off
default_transaction_isolation- read ccommitted
listen_address- localhost
portmax_connection- 100
client_encoding- SQL_ASCII
log_destination- stderr
- options
- syslog
- syslogに出力
- syslog
logging_collector- off
- 標準エラーをファイルに書き出すかどうか
log_directory- log
log_min_message- WARNING
log_filenamelog_line_prefixlog_statement
- ミシレイニアス
- pg_settingsビュー
- メタテーブル
- サーバのパラメータ値が保存されている
- 参照と更新が可能
ALTER SYSTEM- 概要
- サーバのパラメータを変更するクエリ
- 設定した内容は
postgresql.auto.confに書き込まれる
- 概要
postgresql.auto.confpostgresql.confより優先される
SET LOCAL,SET SESSION- 実行時パラメータの設定を変更
- 再起動すると値は消える
- pg_basebackupコマンド
- PITR
- ファイルからバックアップできるようにすること
- WALファイル
- トランザクションデータのこと
- pg_start_backup()、pg_stop_backup()
- バックアップコマンド
- pg_dumpコマンド
-F,--formatp: textc: カスタムバイナリt: tar
-f,--filename- 出力
CLI
パスワードが不明なのでpostgresで最初に入る
$ /usr/bin/sudo -u postgres psql
ユーザの作成
$ /usr/bin/sudo -u postgres createuser ${USER} -S --createdb
データベースの作成
$ /usr/bin/sudo -u postgres createdb -T template0 testdb