#author("2021-05-27T08:09:51+00:00","default:admin","admin")
#author("2021-05-27T08:12:06+00:00","default:admin","admin")
-[[Let's POSTGRES:https://lets.postgresql.jp/]]
-[[PostgreSQLインサイド ~ PostgreSQLに関する富士通の情報がここに ~:https://www.fujitsu.com/jp/products/software/resources/feature-stories/postgres/]]
--[[PostgreSQL技術インデックス:https://www.fujitsu.com/jp/products/software/resources/feature-stories/postgres/article-index/]]

*他DBMSとの比較 [#l3bb28f8]
-[[Top 10 Databases to Use in 2021:https://towardsdatascience.com/top-10-databases-to-use-in-2021-d7e6a85402ba]]
-[[Compare SQL Server, MySQL and PostgreSQL Features:https://www.mssqltips.com/sqlservertip/5745/compare-sql-server-mysql-and-postgresql-features/]]

-[[MariaDB vs MySQL vs PostgreSQL比較:最適なRDBは?ベンチマーク付選択フローチャート:https://vpshikaku.com/mariadb-mysql-postgresql/]]
-[[3種類のデータベースを徹底解説!(PostgreSQL、MySQL、SQLite):https://bigdata-tools.com/sql-db/]]

-[[PostgreSQLとMariaDBを比較:https://www.ossnews.jp/compare/PostgreSQL/MariaDB]]
-[[MariaDB(MySQL) PostgreSQL どちらを選ぶか?:https://qiita.com/rdonster/items/3d3a83b311dcdfb86fb0]]
-[[MySQL/MariaDBではなくPostgreSQLを選ぶ理由:https://developers.srad.jp/story/15/03/22/0550213/]]

**特徴 [#d579e364]
-PostgreSQLはJSON(=jsonb型)はNative Indexをサポートしている為、中途半端なVirtual Columnという仕組みでIndexを模してるMariaDB(MySQL)とは、JSON型で値へのアクセス速度が必要になった場合速度が断然違う(速い)
-REST APIを提供するPostgREST、GraphQL APIを提供するGraphileといったものがあり、JSON利用が簡単&性能が出る=モバイルアプリ&Single Page Application開発がより少ない負担で出来る
-PostGISによるGIS機能のサポートが充実
-MariaDBより機能が多い
-データのエラー判定がMariaDBより厳格で、想定外の値処理による不正な値処理の正常扱い通過が起きにくい
-1テーブルが持てる索引の数にMariaDB/MySQLの様な制限(64個)がない

*内部構造 [#a4da89a9]
-[[第2章 PostgreSQLの内部構造―プロセスやメモリの流れ,特徴的な機能のしくみ:https://gihyo.jp/dev/feature/01/dex_postgresql/0002?page=1]]

*Version [#z9f9630f]
**13 [#e2193bb0]
-[[性能をさらに強化した「PostgreSQL 13」が登場:https://mag.osdn.jp/20/09/26/121600]]

-[[PostgreSQL13の新機能:https://lets.postgresql.jp/documents/technical/13]]
-[[篠田の虎の巻「PostgreSQL 13 新機能検証」公開!:https://community.hpe.com/t5/HPE-Blog-Japan/%E7%AF%A0%E7%94%B0%E3%81%AE%E8%99%8E%E3%81%AE%E5%B7%BB-PostgreSQL-13-%E6%96%B0%E6%A9%9F%E8%83%BD%E6%A4%9C%E8%A8%BC-%E5%85%AC%E9%96%8B/ba-p/7103041?profile.language=ja#.YKHnEOj7RPb]]

-[[PostgreSQL 13 に関する技術情報:https://www.sraoss.co.jp/tech-blog/pgsql/13-0/]]
-[[PostgreSQL 13 検証報告:https://www.sraoss.co.jp/tech-blog/pgsql/pg13report/]]

-[[押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料) :https://www.slideshare.net/nttdata-tech/postgresql-13-new-features-nttdata-fujii-postgresql-conference-japan-2020]]

**12 [#v2baf1df]
-[[PostgreSQL12で使いたいモジュール(pg_prewarm/pg_stat_statements/auto_explain/pg_repack/pgstattuple):https://qiita.com/mkyz08/items/ce91e0b8b719d01f7044]]

*運用事例 [#ta444c13]
-[[大規模監視サーバでのPostgreSQL:https://www.pgecons.org/wp-content/uploads/2020/02/PGECons_20200212_Seminar_3_SRA.pdf]]
-[[コニカミノルタ系がSQL Serverから「PostgreSQL」に移行した訳と、直面した壁:https://techtarget.itmedia.co.jp/tt/news/2010/02/news03.html]]

*JSON対応 [#l768bde9]
-[[PostgreSQLのアンチパターン : 何でもかんでもjsonに入れる:https://yakst.com/ja/posts/2445]]

-[[【PostgreSQL】 jsonb型カラムをSQLで検索・集計したい:https://blog.serverworks.co.jp/postgres_jsonb_search]]
-[[PostgreSQL JSON型についての使い勝手とパフォーマンス、時々ハマりどころの調査:https://qiita.com/ma2shita/items/d491fed37d5ffe616198]]
-[[PostgreSQLメモ:JSON, JSONB型の登録・検索・更新:https://qiita.com/Nyokki/items/4033fc0b6d8be44f3ceb]]
-[[PostgreSQLにおけるjson/jsonb型の取り扱い:https://rinoguchi.net/2021/03/postgresql-json.html]]
-[[【最新版】PostgreSQLのJSONの仕様 – 各バージョンのリリース内容:https://yu-report.com/entry/postgresqlverJson/]]
-[[PostgreSQLのJSONB型を利用してタグ検索を行う:https://blog.ohgaki.net/should-use-postgresql-for-tag-search-json]]

-[[PostgreSQL 9.3 の JSON サポートについて(長いよッ):https://qiita.com/kumazo/items/483f47360f8b61a9fbb9]]
-[[PostgreSQL 9.4 の JSON サポートについて:https://qiita.com/kumazo/items/9010f9dad134b9d9d16d]]

-[[JSON Support in PostgreSQL, MySQL, MongoDB, and SQL Server:https://orangematter.solarwinds.com/2017/02/10/json-support-in-postgresql-mysql-mongodb-and-sql-server/]]
-[[SQL/JSON standard-2016 conformance for PostgreSQL, Oracle, SQL Server and MySQL:https://obartunov.livejournal.com/200076.html]]

**JSONB [#hecbdfc5]
-[[PostgreSQLでのJSONBデータの使い方(展開、結合、集約):https://qiita.com/kyv28v/items/15a3668b1ba266de5994]]
-[[PostgreSQL の JSONB 型の紹介とメリット:https://www.bokukoko.info/entry/2017/07/02/211449]]

*hstore型 [#s988aa27]
-[[PostgreSQLのhstore型を操作するSQL構文まとめ:https://qiita.com/f-murakami/items/327047a1bf34393a86a3]]


*パフォーマンスチューニング [#m884fd4d]
-[[パフォーマンスチューニング9つの技 ~「基盤」について~:https://www.fujitsu.com/jp/products/software/resources/feature-stories/postgres/article-index/tuningrule9-base/]]

-[[第9回 パフォーマンス・チューニング(前編):https://oss-db.jp/dojo/dojo_info_09]]
-[[第10回 パフォーマンス・チューニング(後編):https://oss-db.jp/dojo/dojo_info_10]]

*バックアップ・リストア [#ff69914d]
-[[PostgreSQL 特定のデータベースのバックアップとリストア:https://www.kakiro-web.com/postgresql/postgresql-database-backup-restore.html]]
-[[PostgreSQLのダンプとリストア:https://qiita.com/kame_hitoshi/items/0caca3615764fd566a1c]]
-[[PostgreSQLのbackup, restore方法まとめ:https://qiita.com/rice_american/items/ceae28dad13c3977e3a8]]
-[[技術を知る:PostgreSQLのバックアップとリカバリーPostgreSQLインサイド:https://www.fujitsu.com/jp/products/software/resources/feature-stories/postgres/backup-recovery/]]

-[[PostgreSQLのデータベースを強制削除する:https://hnakamur.github.io/memo/force-delete-postgresql-database.html]]

**ファイル形式 [#tc5c14d7]
***スクリプト形式 [#g0eb27f7]
-スクリプト形式の出力は、リストアに必要なSQL文の羅列が出る
-psqlコマンドでリストア
-スクリプト形式の場合はプレーンテキストなので、リストアの際にエラーが出たら、中を見れるという利点がある

***アーカイブ形式 [#uaf8671e]
-バイナリの形で出力される
-リストアはpsqlコマンドでなくpg_restoreコマンドで行う
-アーカイブ形式の利点は、 「指定したtableのみを選択してリストアできる」
-アーカイブ形式には以下の2種類がある
--custom形式
--tar形式
-custom形式はdefaultで圧縮されるので、ファイルサイズが小さくなる


**バックアップ [#leaccb69]

**リストア [#z6b187f0]

**バッチファイル [#d3d007a5]
***backup.bat [#m7a29006]
 set USER=postgres
 
 pg_dump --create --clean --if-exists --inserts -U %USER% -d %1 > %2

***force_terminate_connection.sql [#g376e84f]
 select * from pg_database where datname = 'XXXX';
 
 update pg_database set datallowconn = 'false' where datname = 'XXXX';
 alter database XXXX connection limit 1;
 
 select pg_terminate_backend(pid) from pg_stat_activity where datname = 'XXXX';

-上記 XXXX を対象DBに書き換え
-参考)[[PostgreSQLのデータベースを強制削除する:https://hnakamur.github.io/memo/force-delete-postgresql-database.html]]

***restore.bat [#mb4c60c4]
 set USER=postgres
 
 psql -U %USER% -f force_terminate_connection.sql
 psql -U %USER% -f %1

*ODBCドライバ [#j6db8c0d]
-[[Windows用 (msi):https://www.postgresql.org/ftp/odbc/versions/msi/]]
--一番下が最新

-[[psqlODBC (PostgreSQLむけODBCドライバ):https://www.sraoss.co.jp/tech-blog/pgsql/psqlodbc/]]

**インストール [#p095dd80]
-[[クライアント端末にODBCドライバをインストールする:https://www.projectgroup.info/documents/PostgreSQL/POS_000008.html]]
-!!! システム DSN に追加すべし !!!

**DSN [#vcfe1730]
-[[DSN (データ ソース名) とは何ですか。:https://support.microsoft.com/ja-jp/help/966849/what-is-a-dsn-data-source-name]]

-システム DSN
--システム全体で使用される DSN 
--プログラムが使用されているマシンでは、この DSN を作成しなければならない
--レジストリキー:HKEY_LOCAL_MACHINE\Software\Odbc\Odbc.ini\Odbc データ ソース

-ユーザー DSN
--特定のユーザー用に作成された DSN
--DSN を作成したユーザーのみ使用することができる
--レジストリキー:HKEY_CURRENT_USER\Software\Odbc\Odbc.ini\Odbc データ ソース

-ファイル DSN
--DSN を含むテキストをテキストファイルに格納
--データソースに接続するための情報をファイルに格納するので,ODBC.INIやレジストリから情報を取得しないで接続を確立できる

**ERROR [IM002] [Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバーが見つかりません。 [#nc3f1938]
-まずは「システム DSN」にドライバーを追加しているか確認
--プログラムが使用されているマシンでは「システム DSN」を作成しなければならない

-[[データ ソース名および指定された既定のドライバーが見つかりません:https://wsbs.wordpress.com/2016/12/07/%E3%83%87%E3%83%BC%E3%82%BF-%E3%82%BD%E3%83%BC%E3%82%B9%E5%90%8D%E3%81%8A%E3%82%88%E3%81%B3%E6%8C%87%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%9F%E6%97%A2%E5%AE%9A%E3%81%AE%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90/]]
-[[[Microsoft] [ODBC Driver Manager]データソース名が見つからず、デフォルトのドライバーが指定されていません:https://www.it-swarm.dev/ja/odbc/microsoft-odbc-driver-manager%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BD%E3%83%BC%E3%82%B9%E5%90%8D%E3%81%8C%E8%A6%8B%E3%81%A4%E3%81%8B%E3%82%89%E3%81%9A%E3%80%81%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%AE%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%83%BC%E3%81%8C%E6%8C%87%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%9B%E3%82%93/1073338620/]]


-[[PowerShellからPostgreSQLに接続時に既定のドライバーが見つからないと表示された:https://buralog.jp/postresql-odbc-connection-error/]]
--psqlodbc x64をアンインストールして、psqlodbc x86をインストールしなおしたら解決しました。
-[[windows 64bitのODBCドライバ:http://blog.syo-ko.com/?eid=223]]

**IISとの接続トラブル [#ddac486d]
-[[IISでODBC利用時のアクセス権限:http://prometa.seesaa.net/article/107793788.html]]
--レジストリ「HKLM \ SOFTWARE \ Microsoft \ ODBC \ ODBC.INI」に、IISの実行ユーザに対するアクセス許可を与える
---「ファイル名を指定して実行」で「regedit」を実行
---表示されたレジストリエディタのダイアログにて、ODBC.INIを右クリックし、「アクセス許可」を選択
---「ODBC.INIのアクセス許可」のダイアログが表示されるので、追加ボタンを押し、IISの実行ユーザを登録

-[[Windows2008に移行したらODBC接続が出来なくなった:https://asanono.hatenadiary.org/entry/20100728/1280311414]]


*インストール [#tea191b1]
**Windows [#m0369b6d]
-[[PostgreSQL を Windows にインストールするには:https://qiita.com/tom-sato/items/037b8f8cb4b326710f71]]
-[[PostgreSQLのインストール方法【Windows】:https://proengineer.internous.co.jp/content/columnfeature/6727]]
-[[【初心者向け】PostgreSQLのダウンロード及びインストール方法:https://eng-entrance.com/postgresql-download-install]]
-[[WindowsでPostgreSQLが使いたいゾウ:https://tivel.jp/archives/11002]]

**Linux [#ee2c931a]
-[[PostgreSQL 13のインストール (CentOS 8編):https://changineer.info/server/postgresql/postgresql_install_centos.html]]

**Mac OS X [#g3ce3b03]

1. インストール
 $ ./configure オプション
 $ make
 $ sudo make install(デフォルトでは/usr/local/pgsqlにインストールされる)

2. 共有メモリ関係の設定変更

/etc/sysctl.conf がある場合は、このファイルを以下のように編集
 kern.sysv.shmmax=167772160
 kern.sysv.shmall=65536
 kern.sysv.shmmin=1
 kern.sysv.shmseg=8
 kern.sysv.shmmni=32

ない場合は、/etc/rc の64行目付近を以下のように編集
 sysctl -w kern.sysv.shmmax=167772160 kern.sysv.shmmin=1 kern.sysv.shmmni=32 kern.sysv.shmseg=8 kern.sysv.shmall=65536

編集後、Macを再起動し、ターミナルを起動。以下のコマンドを打って変更が反映されているか確認。
 $ sysctl -a | grep kern.sysv
 
 kern.sysv.shmmax: 167772160
 kern.sysv.shmmin: 1
 kern.sysv.shmmni: 32
 kern.sysv.shmseg: 8
 kern.sysv.shmall: 65536
         : 

3. postgres というユーザーを作成

4. "su - postgres" でpostgresユーザーになって以下を実行

 $ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
 $ /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l postgres.log start
 $ /usr/local/pgsql/bin/createdb test
 $ /usr/local/pgsql/bin/psql test

5. 自動起動の設定
http://www.entropy.ch/software/macosx/postgresql/ より~
 pgsql-startupitem-1.2.pkg.tar.gz をダウンロードしてインストール

*設定 [#b23bcf37]
**パスワード変更 [#k3a45985]
-[[PostgreSQLのパスワードを初期化:https://www.flyenginer.com/low/low_db/postgresql_low/postgresql%E3%81%AE%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E3%82%92%E5%88%9D%E6%9C%9F%E5%8C%96.html]]

*ツール [#s3c253b9]
**pgAdmin4 [#j84822ca]
-[[PostgreSQL pgAdmin 4の使い方(起動からデータ参照):https://itsakura.com/pgadmin4-db-create]]

*クラウドでの運用 [#t61a6908]
**Amazon RDS for PostgreSQL [#c07b5680]
-[[Amazon RDS for PostgreSQLにおける自動バキュームのケーススタディ:https://aws.amazon.com/jp/blogs/news/a-case-study-of-tuning-autovacuum-in-amazon-rds-for-postgresql/]]

**Azure Database for PostgreSQL [#rff6760c]
-[[【第1回】基本から始める Azure Database for PostgreSQL 【PostgreSQL (オンプレミス)(1)】:https://www.nobtak.com/entry/pg01]]
-[[【第2回】基本から始める Azure Database for PostgreSQL 【PostgreSQL (オンプレミス)(2)】:https://www.nobtak.com/entry/pg02]]
-[[【第3回】基本から始める Azure Database for PostgreSQL 【PostgreSQL (オンプレミス)(3)】:https://www.nobtak.com/entry/pg03]]
-[[【第4回】基本から始める Azure Database for PostgreSQL 【基本1】:https://www.nobtak.com/entry/pg04]]

*サポート [#s62c9f8f]
-[[PosggreSQL Versioning Policy:https://www.postgresql.org/support/versioning/]]
-[[PostgreSQL Support:https://www.postgresql.org/support/]]

-[[OS・ミドルウェアのサポート終了期限:https://qiita.com/tokamon/items/07030fcef453293a94b8]]

**技術サポート [#z12aaa8f]
-[[サービス一覧 - PostgreSQL エンタープライズ・コンソーシアム:https://www.pgecons.org/postgresql-info/services/]]

-[[PostgreSQL/PowerGres サポート&保守サービス:https://www.sraoss.co.jp/prod_serv/support/pgsql-mainte/]]
-[[PostgreSQL - 保守サポート料金 - NEC:https://jpn.nec.com/oss/middle_support/postgresql/price.html]]

-[[サイオスOSSよろず相談室:https://sios.jp/products/oss/yorozu/]]
--エンジニアの調査時間を契約する形
--Basic Supportだと月10時間年60時間

-[[PostgreSQL/PowerGres サポート&保守サービス:https://www.sraoss.co.jp/prod_serv/support/pgsql-mainte/]]
-[[PostgreSQL - 保守サポート料金 - NEC:https://jpn.nec.com/oss/middle_support/postgresql/price.html]]

*リンク集 [#l2475a8e]
-[[PostgreSQL:http://www.postgresql.org/]]
-[[Max OS Xのパッケージ配布:http://www.entropy.ch/software/macosx/postgresql/]]
-[[PostgreSQLのインストール:http://homepage.mac.com/reefedge/osx/index_4.html#postgres]]
-[[PostgreX:http://www.magic3.org/postgrex/]]

*関連製品 [#i84a809d]
-[[PG-Strom:https://heterodb.com/]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS