Postgres_newbies
ことはじめ 事情があってね、Mysqlではなく、Postgresを使わないといけないのですよ。 でね、PostgreSQL徹底入門手本を買ったので、それのまとめとか、読んでて気づいたこととか思ったこととか、そういうのまとめておきましょう。 全体を読んでの感想 やはり、Mysqlを使ってきたのでmysqlとの違いに目が行くわけですね。そうね、postgresは並列処理をスレッド並列ではなく、プロセス並列でやっているのが特徴的。Mysqlがスレッド並列だけどね。あと、プロセス単位でのコマンドが多い。つまり、プロセス内のコマンドではなく、プロセスとしてのコマンドね。これも結構違和感あるというか、一般的には、○○ーctlとかで一つのフロントエンドコマンドと、バックエンドで動いているデーモンプロセスの二つでエコシステムが構成されているが、postgresはなんかめっちゃ多い。 全体的にモダンな感じがしない。どちらかというと無骨だな。個人的にははやりMysqlがいいのではないかと思う。Mysqlであればストレージエンジンもプラがブルなのでinnodbとかほかのに変えることもできるし。しかし、俺にはPostgresを使わないといけない理由があるのだ!!ということで、使っていきたいと思う。しかし、何度も言うように、パフォーマンスはmysqlの方が断然上だし、 ほかのソフトとの親和性もmysqlの方が上だってことは伝えておきたい。apache igniteもmysqlとは接続性があるけど、postgresは聞いたことがないし。 あと、現在のpostgresの最新版は12だけど、これは11についてです。まあ、比較的新しいので気にする必要はないでしょう。 余談だが、この本を読んで知識が体系的にまとめられた気がする。 postgresはバークレイで作られた。結構歴史についても詳しくなったし、知識の精緻化が進んだよ。 ACIDとCRUDもネットワークに組み込まれたので、忘れることはないだろうし、ジムグレイ (1998念チューリング賞受賞者) がACIDを提唱して、実装した人だってのももうわかった。あと、Michael stonebreaker (2014念チューリング賞受賞者) ね。この人がpostgresを作った人で、まさに巨人だ。ありがたい。 めっちゃ余談だが、2016年は、www,ブラウザ、webのプロトコルの発明者、ティムバーナーずりー。2017年のチューリング賞受賞者はあのへねぱた本で有名なジョンヘネシーとデイビットパターそん。 2018年のチューリング賞受賞者の一人はヤンルカンだし、2020年のチューリング賞受賞者はジャックどんがら先生です。 Ubuntuへのインストール手順 パッケージをインストール もうパッケージが何かはわかるよね。あるソフトってのは様々なライブラリに依存して作られているんだ。我々は巨人の方に乗っからせていただいているんだ。で、依存ライブラリも含めて提供してくれるのがパッケージな。いいか? sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - sudo apt-get update sudo apt-get -y install postgresql サーバ起動手順 んー、本にはinitdbでデータベースクラスタ (データの保存先のディレクトリ) を作ってから起動する必要があるって書いてあったけど、今回はもう自動的に/var/lib/postgresql/12/mainに作られていたね。これはパッケージでインストールしたからかな。まあ、やってくれているなら問題ない。がinitdbちょっと使ってみたいんだよね。 あー、pg_ctlも使えないね。ちょっとこれはどうなのかな。 これがインストールの際の出力結果だね。 Creating new PostgreSQL cluster 12/main ... /usr/lib/postgresql/12/bin/initdb -D /var/lib/postgresql/12/main --auth-local peer --auth-host md5 The files belonging to this database system will be owned by user "postgres". This user must also own the server process. The database cluster will be initialized with locale "en_US.UTF-8". The default database encoding has accordingly been set to "UTF8". The default text search configuration will be set to "english". Data page checksums are disabled. fixing permissions on existing directory /var/lib/postgresql/12/main ... ok creating subdirectories ... ok selecting dynamic shared memory implementation ... posix selecting default max_connections ... 100 selecting default shared_buffers ... 128MB selecting default time zone ... Asia/Tokyo creating configuration files ... ok running bootstrap script ... ok performing post-bootstrap initialization ... ok syncing data to disk ... ok Success. You can now start the database server using: pg_ctlcluster 12 main start initdbもあるけど、パスが通っていないんだね。 でね、もうすでに起動しちゃってるんだわ。だから、気にせずに行ってくれ。マジで。 ...