2020-12-31ログ:ついつい本を買う
Ping-tでOSS-DBの勉強をする
一周した。
『内部構造から学ぶPostgreSQL 設計・運用計画の鉄則』
ノリで買ってしまった。
『入門UNIXシェルプログラミング』
ノリで買ってしまった。
2020-12-30ログ:正規表現を思い出す、など
『失敗から学ぶRDBの正しい歩き方』
読みきった。
ジェイウォークなテーブルを正規表現で抽出する
『失敗から学ぶRDBの正しい歩き方』の「第17章 複雑なクエリ」で出てきたアンチパターンの例。
id | name | child_id |
---|---|---|
1 | hoge | 1,2,3,4 |
2 | fuga | 4,5,6,1 |
3 | foo | 7,11,9 |
一つのカラムにカンマ区切りで複数のデータを格納した、『SQLアンチパターン』で言うところのジェイウォークというアンチパターン。
child_id=1
のデータを検索するのにも、複数のLIKE演算子をOR接続する必要があり大変だよねというのが本題。
そこから逸れるが、正規表現でどのように抽出するんだっけと思ってクエリを考えた。
SELECT * FROM table_name WHERE child_id ~ '(^|,)1(,|$)' ;
合っている自信がなく、正規表現を少し復習しようと思った。
おまけの配列にキャストするパターン。
SELECT * FROM table_name WHERE string_to_array(child_id, ',') @> ARRAY['1']; ;
使う日が来ないといいな。
DISTINCT ON
DISTINCTのON句。初めて知った(標準SQLではない)
Ping-tでOSS-DBの勉強をする
残り1割ほどだけど詳しくない分野なので、公式ドキュメントと並行してやりたい。
2020-12-28ログ:『失敗から学ぶRDBの正しい歩き方』を買う、など
日付が変わる少し前 プログラム確かに書き換わったんだ
https://pppine.hatenablog.com/entry/%E2%96%A0
Ping-tでOSS-DBの勉強をする
昨日から引き続き。
6割くらい問いた。参考を読んでいるので時間がかかる。
『PostgreSQL 12.4文書』を読む
今日は主にバックアップとリストアの辺り。
『失敗から学ぶRDBの正しい歩き方』
最近Podcastを聴くのにハマっていて、その中でこの本が触れられていた。
技術書とかを紙で欲する気持ちがあるけど、すぐに欲しいので電子で買ってしまった。反省。
2020-12-27ログ:Ping-tでOSS-DBの勉強をする、など
Ping-tでOSS-DBの勉強をする
Linuc/LPICやCCNAなどの資格試験をサポートする学習サイト。
無料でも利用できるがOSS-DBのコンテンツは有料プランであったため、月額2,400円のプレミアムコンテンツに登録した。基本的には問題集だが、今のところ解説が充実している印象がある。
3割くらいは問いた。
『PostgreSQL 12.4文書』を読む
気が遠くなる。
今日はサーバの辺りを読んだ。
VMでPostgreSQLサーバを起動する
昨日用意したVMに、『PostgreSQL 12.4文書』の「III. サーバの管理」を参考にしながらPostgreSQLサーバを構築する。
環境
- macOS:10.15.7
- VirtualBox:6.1.4
- centos:7.9
- PostgreSQL:12.4
作業内容
仮想マシンのネットワーク設定変更
設定>ネットワークから「アダプター2」を「割り当て:ホストオンリーアダプタ」で設定。
仮想マシンにログインしnmtui
コマンドでネットワークマネージャーを立ち上げてアダプタの設定を変更。
- enp0s3
- IPv6 CONFIGURATION
- [×] Automatically Connect
- IPv6 CONFIGURATION
- ■■■■1
PostgreSQLのインストール
ソースからビルドではなくyumリポジトリを追加してインストールする。
上記サイトに各種情報を入力してコピーしたスクリプト。
# Install the repository RPM: sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm # Install PostgreSQL: sudo yum install -y postgresql12-server # Optionally initialize the database and enable automatic start: sudo /usr/pgsql-12/bin/postgresql-12-setup initdb sudo systemctl enable postgresql-12 sudo systemctl start postgresql-12
confファイルを編集(一旦全て許可)
- postgresql.conf
listen_addresses = '*'
- pg_hba.conf
host all all 0.0.0.0/0 md5
ファイアウォール設定
外部からsshで接続できるようにする。
ファイアウォールにサービスを登録して再起動。
# firewall-cmd --add-service=postgresql --zone=public --permanent success # systemctl restart firewalld
virtualboxのポートフォワーディングに「5432」を追加しておく。
以上