#oyasuminase

駆け出しオタクエンジニア

2020-12-30ログ:正規表現を思い出す、など

『失敗から学ぶRDBの正しい歩き方』

gihyo.jp

読みきった。

ジェイウォークなテーブルを正規表現で抽出する

『失敗から学ぶ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ではない)

www.postgresql.jp

Ping-tでOSS-DBの勉強をする

ping-t.com

残り1割ほどだけど詳しくない分野なので、公式ドキュメントと並行してやりたい。

2020-12-28ログ:『失敗から学ぶRDBの正しい歩き方』を買う、など

日付が変わる少し前 プログラム確かに書き換わったんだ

https://pppine.hatenablog.com/entry/%E2%96%A0

Ping-tでOSS-DBの勉強をする

昨日から引き続き。

ping-t.com

6割くらい問いた。参考を読んでいるので時間がかかる。

PostgreSQL 12.4文書』を読む

www.postgresql.jp

今日は主にバックアップとリストアの辺り。

『失敗から学ぶRDBの正しい歩き方』

gihyo.jp

最近Podcastを聴くのにハマっていて、その中でこの本が触れられていた。

ajito.fm

技術書とかを紙で欲する気持ちがあるけど、すぐに欲しいので電子で買ってしまった。反省。

2020-12-27ログ:Ping-tでOSS-DBの勉強をする、など

Ping-tでOSS-DBの勉強をする

Linuc/LPICCCNAなどの資格試験をサポートする学習サイト。

ping-t.com

無料でも利用できるがOSS-DBのコンテンツは有料プランであったため、月額2,400円のプレミアムコンテンツに登録した。基本的には問題集だが、今のところ解説が充実している印象がある。

3割くらいは問いた。

PostgreSQL 12.4文書』を読む

www.postgresql.jp

気が遠くなる。

今日はサーバの辺りを読んだ。

VMPostgreSQLサーバを起動する

昨日用意したVMに、『PostgreSQL 12.4文書』の「III. サーバの管理」を参考にしながらPostgreSQLサーバを構築する。

環境

作業内容

仮想マシンのネットワーク設定変更

設定>ネットワークから「アダプター2」を「割り当て:ホストオンリーアダプタ」で設定。

仮想マシンにログインしnmtuiコマンドでネットワークマネージャーを立ち上げてアダプタの設定を変更。

  • enp0s3
    • IPv6 CONFIGURATION
    • [×] Automatically Connect
  • ■■■■1
    • Profile name enp0s8
    • IPv4 CONFIGURATION
      • Addresses [割り当てたホストオンリーアダプタのipアドレス範囲]
    • IPv6 CONFIGURATION
    • [×] Automatically Connect

PostgreSQLのインストール

ソースからビルドではなくyumリポジトリを追加してインストールする。

www.postgresql.org

上記サイトに各種情報を入力してコピーしたスクリプト

# 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ファイルを編集(一旦全て許可)

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」を追加しておく。

以上