PostgreSQL
複数ベンダがそれぞれ互換環境な商用DBをつくっていたりいなかったりして技術を持ち寄っているのかな
APIは互換性があるものが多い
Linuxディストリビューションでは標準的に利用できる 日本PostgreSQLユーザ会
台湾にもユーザ会あり
設定
設定ファイルは /etc/postgresql/15/main や /usr/lib/postgresql/15/data, /var/lib/pgsql/data などどこかにある
アクセス制御に pg_hba.conf と postgresql.conf を編集する
pg_hba.conf
IPアドレスと認証方法などを制御するもの
postgresql.conf
待ち受けポート(listen_addresses)が初期 localhost なので * などに変更すると他サーバなどからも接続できたりする
code:postgresql.conf
listen_addresses='localhost,192.168.0.11,fe80::xxxx:xxxx:xxxx:xxxx'
localnetwork 系から接続できるようにしておく
pg_hba.conf
code:pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
host all all 192.168.0.0/24 scram-sha-256
host all all fe80::/64 scram-sha-256
IPv4 と IPv6 のローカルアドレスっぽい例
# systemctl restart postgresql
Docker/Podman
Dockerfile で locale と timezone などを設定するといいかも
code:Dockerfile
FROM docker.io/postgres:latest
RUN localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8
ENV LANG ja_JP.utf8
ENV TZ=Asia/Tokyo
15-alpine 以降では ICU locales を利用すると Dockerfile なしでLocale 設定可能
code:podman
# podman create -e LANG=ja_JP.utf8 -e POSTGRES_INITDB_ARGS="--locale-provider=icu --icu-locale=ja-JP" docker.io/postgres:17-alpine
table:JDBC
Driver org.postgresql.Driver 今は設定不要
DataSource org.postgresql.ds.PgSImpleDataSource
org.postgresql.ds.PgPoolingDataSource 使える?
org.postgresql.ds.PGConnectionPoolDataSource ?
org.postgresql.xa.PGXADataSource
JDBC URL jdbc:postgresql://host:port/database host, port, database 省略可能
code:Maven
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>[42.7.4,)</version>
<type>jar</type>
</dependency>