5/11のMicrosoft Build 2017で、PostgreSQLのDBaaSがAzureで提供されることが発表されました。
ちなみに、Azureは普段使っていないのでそんなに詳しくありません。
まず、Azureのダッシュボードで「PostgreSQL」と検索すると、PostgreSQLのリソースが出てきます。
そこで「追加」を選び、入力項目を適当に埋めて「作成」を実行すると、数分経ってPostgreSQLのリソースが作成されます。
リソースが作成されただけだと外部から接続ができないので、「設定」→「接続のセキュリティ」から接続を許可するネットワークを指定します。
すると、外部からでもpsqlで普通に接続できるようになりました。
ちなみに、Azureで「サーバー管理者ログイン名」として作成しているユーザは、PostgreSQLで言うところのスーパーユーザーではありませんので注意が必要でしょう。まぁ、PostgreSQLのDBaaSはどこも同じだと思いますが。
さて、PostgreSQL と言えば EXTENSION です。
というわけで、最初からセットアップされている EXTENSION と、追加で使える EXTENSION を確認してみました。
以下は最初からインストールされている EXTENSION です。
以下は CREATE EXTENSION を実行すれば使える EXTENSION です。プレビューだからか、ちょっと少な目な感じでしょうか。個人的には PL/Python などが使えるといいのになぁと思います。
ちなみに、スーパーユーザー権限ではないユーザでCREATE EXTENSIONできるんだっけ?というのを確認してみたのですが、一応、CREATE EXTENSIONできるようです。
ざっと見た感じ、以下のような設定ができるようです。
サーバパラメータ
監視できるメトリックス
サーバログ
というわけで、ざっと Azure Database for PostgreSQL を見てみました。
このエントリは、Azure Database for PostgreSQL を使い始めるところから1時間弱くらいで書き上げているわけですが、DBaaSは楽だなぁと改めて感じました。
一方で、PostgreSQLの良さの一部には、アプリケーション開発における拡張性や柔軟性の高さがあったりするわけですが、この辺りをDBaaSでどこまで実現できるのかというのが(サービス提供側の)難しさなのかなぁ、という気もします。(まぁ、使える EXTENSION とかは決めの問題のような気もしますが。)
Azure Database for PostgreSQL はDBaaSとしては後発だと思うので、後発ならではの工夫や特徴があるともっと面白くなりそうだなぁと感じました(MADlibが使える、とか)。
では、また。
- [速報]マイクロソフト、Azureで「MySQL」「PostgreSQL」のデータベースサービス提供を発表、運用の手間は不要。Build 2017 - Publickey
http://www.publickey1.jp/blog/17/azuremysqlpostgresqlbuild_2017.html
ちなみに、Azureは普段使っていないのでそんなに詳しくありません。
■PostgreSQLのリソースを作成する
まず、Azureのダッシュボードで「PostgreSQL」と検索すると、PostgreSQLのリソースが出てきます。
そこで「追加」を選び、入力項目を適当に埋めて「作成」を実行すると、数分経ってPostgreSQLのリソースが作成されます。
■PostgreSQLに接続する
リソースが作成されただけだと外部から接続ができないので、「設定」→「接続のセキュリティ」から接続を許可するネットワークを指定します。
すると、外部からでもpsqlで普通に接続できるようになりました。
[snaga@localhost ~]$ psql -h hostname.postgres.database.azure.com -U snaga@hostname postgres
Password for user snaga@hostname:
psql (9.6.0, server 9.6.2)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-SHA384, bits: 256, compression: off)
Type "help" for help.
postgres=> select version();
version
-------------------------------------------------------------
PostgreSQL 9.6.2, compiled by Visual C++ build 1800, 64-bit
(1 row)
ちなみに、Azureで「サーバー管理者ログイン名」として作成しているユーザは、PostgreSQLで言うところのスーパーユーザーではありませんので注意が必要でしょう。まぁ、PostgreSQLのDBaaSはどこも同じだと思いますが。
Collationは「C」ではなかったので、この辺は注意が必要かもしれません。
postgres=> select * from pg_user;
usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls | passwd | valuntil | useconfig
-----------------+----------+-------------+----------+---------+--------------+----------+----------+-----------
azure_superuser | 10 | t | t | t | t | ******** | |
snaga | 12900 | t | f | f | f | ******** | |
(2 rows)
postgres=> \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+-----------------+----------+----------------------------+----------------------------+-------------------------------------
postgres | azure_superuser | UTF8 | English_United States.1252 | English_United States.1252 |
template0 | azure_superuser | UTF8 | English_United States.1252 | English_United States.1252 | =c/azure_superuser +
| | | | | azure_superuser=CTc/azure_superuser
template1 | azure_superuser | UTF8 | English_United States.1252 | English_United States.1252 | =c/azure_superuser +
| | | | | azure_superuser=CTc/azure_superuser
(3 rows)
■EXTENSIONを見てみる
さて、PostgreSQL と言えば EXTENSION です。
というわけで、最初からセットアップされている EXTENSION と、追加で使える EXTENSION を確認してみました。
以下は最初からインストールされている EXTENSION です。
postgres=> select * from pg_extension;
extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition
--------------------+----------+--------------+----------------+------------+-----------+--------------
plpgsql | 10 | 11 | f | 1.0 | |
pg_stat_statements | 10 | 2200 | t | 1.4 | |
pg_buffercache | 10 | 2200 | t | 1.2 | |
(3 rows)
以下は CREATE EXTENSION を実行すれば使える EXTENSION です。プレビューだからか、ちょっと少な目な感じでしょうか。個人的には PL/Python などが使えるといいのになぁと思います。
postgres=> select * from pg_available_extensions;
name | default_version | installed_version | comment
------------------------------+-----------------+-------------------+---------------------------------------------------------------------------------------------------------------------
address_standardizer | 2.3.2 | | Used to parse an address into constituent elements. Generally used to support geocoding address normalization step.
address_standardizer_data_us | 2.3.2 | | Address Standardizer US dataset example
btree_gin | 1.0 | | support for indexing common datatypes in GIN
btree_gist | 1.2 | | support for indexing common datatypes in GiST
citext | 1.3 | | data type for case-insensitive character strings
fuzzystrmatch | 1.1 | | determine similarities and distance between strings
hstore | 1.4 | | data type for storing sets of (key, value) pairs
intarray | 1.2 | | functions, operators, and index support for 1-D arrays of integers
pgcrypto | 1.3 | | cryptographic functions
pgrouting | 2.3.2 | | pgRouting Extension
pg_buffercache | 1.2 | 1.2 | examine the shared buffer cache
pg_partman | 2.6.3 | | Extension to manage partitioned tables by time or ID
pg_prewarm | 1.1 | | prewarm relation data
pg_stat_statements | 1.4 | 1.4 | track execution statistics of all SQL statements executed
pg_trgm | 1.3 | | text similarity measurement and index searching based on trigrams
plpgsql | 1.0 | 1.0 | PL/pgSQL procedural language
postgis | 2.3.2 | | PostGIS geometry, geography, and raster spatial types and functions
postgis_sfcgal | 2.3.2 | | PostGIS SFCGAL functions
postgis_tiger_geocoder | 2.3.2 | | PostGIS tiger geocoder and reverse geocoder
postgis_topology | 2.3.2 | | PostGIS topology spatial types and functions
postgres_fdw | 1.0 | | foreign-data wrapper for remote PostgreSQL servers
unaccent | 1.1 | | text search dictionary that removes accents
uuid-ossp | 1.1 | | generate universally unique identifiers (UUIDs)
(23 rows)
ちなみに、スーパーユーザー権限ではないユーザでCREATE EXTENSIONできるんだっけ?というのを確認してみたのですが、一応、CREATE EXTENSIONできるようです。
postgres=> create extension hstore;
CREATE EXTENSION
postgres=> create extension postgis;
CREATE EXTENSION
postgres=> create extension pg_trgm;
CREATE EXTENSION
postgres=>
■AzureのPostgreSQLリソースの設定項目
ざっと見た感じ、以下のような設定ができるようです。
サーバパラメータ
監視できるメトリックス
サーバログ
■まとめ
というわけで、ざっと Azure Database for PostgreSQL を見てみました。
このエントリは、Azure Database for PostgreSQL を使い始めるところから1時間弱くらいで書き上げているわけですが、DBaaSは楽だなぁと改めて感じました。
一方で、PostgreSQLの良さの一部には、アプリケーション開発における拡張性や柔軟性の高さがあったりするわけですが、この辺りをDBaaSでどこまで実現できるのかというのが(サービス提供側の)難しさなのかなぁ、という気もします。(まぁ、使える EXTENSION とかは決めの問題のような気もしますが。)
Azure Database for PostgreSQL はDBaaSとしては後発だと思うので、後発ならではの工夫や特徴があるともっと面白くなりそうだなぁと感じました(MADlibが使える、とか)。
では、また。