- [速報]マイクロソフト、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はどこも同じだと思いますが。
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)Collationは「C」ではなかったので、この辺は注意が必要かもしれません。
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が使える、とか)。
では、また。
0 件のコメント:
コメントを投稿