SlideShare uma empresa Scribd logo
1 de 10
Baixar para ler offline
PostgreSQLの魅力
魅力
• 豊富な型
– 無限長の文字列型
– 日付型
• 3日前とか柔軟
– 配列型
– key-value
– 緯度経度型
• 高速なJOIN
– 大きなデータの場合、
nested loopしかない
MySQLより断然高速
• WALによる堅牢性
– 追記型アーキテクチャ
• スケーラビリティ
– 64coreとかまでスケー
ル
• レプリケーション
• Window関数
• 容易な拡張
etc etc etc ...
配列型
CREATE TABLE items(
key text,
items text[]
);
INSERT INTO items
VALUES (1, ['a', 'b'])
INSERT INTO items
VALUES (2, ['c', 'd'])
• 集約関数 array_agg
SELECT array_agg(key)
FROM items
--> [1, 2]
2行だったのが1カラムに!
-> 行数が少なければ高速
になる
key-value型 (hstore)
CREATE TABLE products (
id serial PRIMARY KEY,
name varchar,
attributes hstore
);
• 挿入
INSERT INTO products (name,
attributes) VALUES (
'Geek Love: A Novel',
'author => "Katherine Dunn",
pages => 368,
category => fiction'
);
• 検索
SELECT name
FROM products
WHERE
attributes->'category' =
'fiction';
緯度経度型(地理データ型)
create table landmark(
name text,
point point
);
insert into landmark( name,
point )values(
'渋谷区役所',
point(35.6640352,139.69
82122)
);
• 検索
– 矩形内か
– 円の中か
– 多角形の中か
– 長さ
– 点の数
などなどで検索可能
PostGISでさらに正確にも
JSON型
SELECT
'{"username":"john","posts":121,"email":"john@nowhere.com"}'::json;
json
-------------------------------------------------------------------
{"username":"john","posts":121,"email":"john@nowhere.com"}
• SELECT * from json_each('{"a":"foo", "b":"bar"}'::json)
key | value
-----+-------
a | "foo"
b | "bar"
JSON型に
変換
plv8
• Googleのv8エンジンをPostgreSQLから使え
る
– 関数をJavaScriptで定義している例
CREATE OR REPLACE FUNCTION plv8_test(keys text[], vals text[])
RETURNS
text AS $$
var o = {};
for(var i=0; i<keys.length; i++){
o[keys[i]] = vals[i];
}
return JSON.stringify(o);
$$ LANGUAGE plv8 IMMUTABLE STRICT;
豊富な拡張
• PostGIS
• plv8
• POSTPIC
– 画像の変換とか
• DBLINK
– 別DBと接続
• インストールも簡単
– CREATE EXTENSION
• FDW
– なんにでも接続できる
– mysql
– redis
– CSVファイル
– www
– s3
FDWの例: redis-FDW
• redisをPostgreSQLから直接扱える
# SELECT * from redis_db0 limit 5;
key | value
-----------+-------
user_40 | 44
user_41 | 32
user_42 | 11
user_43 | 3
user_80 | 7
– ここからさらにPostgreSQLのDBとのJOINも可能
• 9.2までは読み込みだけだったけど、9.3から書き込みも
可能に
まとめ
• PostgreSQLの魅力を語りました
– 高速、堅牢、スケール可能
– 豊富な型
– 豊富な拡張

Mais conteúdo relacionado

Destaque

事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711
事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711
事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711エンジニア勉強会 エスキュービズム
 

Destaque (20)

エンジニア勉強会_Node.js
エンジニア勉強会_Node.jsエンジニア勉強会_Node.js
エンジニア勉強会_Node.js
 
de:code エスキュービズム勉強会0620
de:code エスキュービズム勉強会0620de:code エスキュービズム勉強会0620
de:code エスキュービズム勉強会0620
 
モダンweb
モダンwebモダンweb
モダンweb
 
チームEdison
チームEdisonチームEdison
チームEdison
 
de:code 2015
de:code 2015de:code 2015
de:code 2015
 
Cloud Design Pattern #3 Compensating Transaction_エンジニア勉強会20140917
Cloud Design Pattern #3 Compensating Transaction_エンジニア勉強会20140917Cloud Design Pattern #3 Compensating Transaction_エンジニア勉強会20140917
Cloud Design Pattern #3 Compensating Transaction_エンジニア勉強会20140917
 
事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711
事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711
事故らないためのUnix(linux)オペレーション エスキュービズム勉強会0711
 
ほんのりTDD
ほんのりTDDほんのりTDD
ほんのりTDD
 
Growth hackについて 前編_エンジニア勉強会20140305
Growth hackについて 前編_エンジニア勉強会20140305Growth hackについて 前編_エンジニア勉強会20140305
Growth hackについて 前編_エンジニア勉強会20140305
 
iOS開発豆知識_エスキュービズム勉強会20141006
iOS開発豆知識_エスキュービズム勉強会20141006iOS開発豆知識_エスキュービズム勉強会20141006
iOS開発豆知識_エスキュービズム勉強会20141006
 
Growth hackについて後編_エンジニア勉強会20140404
Growth hackについて後編_エンジニア勉強会20140404Growth hackについて後編_エンジニア勉強会20140404
Growth hackについて後編_エンジニア勉強会20140404
 
Virtual reality
Virtual realityVirtual reality
Virtual reality
 
Multipeer connectivity_エスキュービズム勉強会0523
Multipeer connectivity_エスキュービズム勉強会0523Multipeer connectivity_エスキュービズム勉強会0523
Multipeer connectivity_エスキュービズム勉強会0523
 
Fab
FabFab
Fab
 
Rubyのクラスとメソッド_エスキュービズム勉強会0530
Rubyのクラスとメソッド_エスキュービズム勉強会0530Rubyのクラスとメソッド_エスキュービズム勉強会0530
Rubyのクラスとメソッド_エスキュービズム勉強会0530
 
様々なEntry system,register system エンジニア勉強会20140108
様々なEntry system,register system エンジニア勉強会20140108様々なEntry system,register system エンジニア勉強会20140108
様々なEntry system,register system エンジニア勉強会20140108
 
Yii c orange エンジニア勉強会20140129
Yii c orange エンジニア勉強会20140129Yii c orange エンジニア勉強会20140129
Yii c orange エンジニア勉強会20140129
 
エンジニア勉強会20140424
エンジニア勉強会20140424エンジニア勉強会20140424
エンジニア勉強会20140424
 
iOSとwin8_エンジニア勉強会20131106
iOSとwin8_エンジニア勉強会20131106iOSとwin8_エンジニア勉強会20131106
iOSとwin8_エンジニア勉強会20131106
 
Datavisualize
DatavisualizeDatavisualize
Datavisualize
 

Mais de エンジニア勉強会 エスキュービズム

Azure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみたAzure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみたエンジニア勉強会 エスキュービズム
 

Mais de エンジニア勉強会 エスキュービズム (20)

エスキュービズム新技術発表資料
エスキュービズム新技術発表資料エスキュービズム新技術発表資料
エスキュービズム新技術発表資料
 
小売りにおけるAIの可能性
小売りにおけるAIの可能性小売りにおけるAIの可能性
小売りにおけるAIの可能性
 
React Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリングReact Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリング
 
Azure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみたAzure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみた
 
はじめての品質
はじめての品質はじめての品質
はじめての品質
 
Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発
 
機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow
 
Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。
 
IoTで何をやったか
IoTで何をやったかIoTで何をやったか
IoTで何をやったか
 
2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)
 
Dockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについてDockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについて
 
VRのコンテンツ
VRのコンテンツVRのコンテンツ
VRのコンテンツ
 
Azureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについてAzureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについて
 
レイアウトについて
レイアウトについてレイアウトについて
レイアウトについて
 
アルゴリズムとデータ構造(初歩)
アルゴリズムとデータ構造(初歩)アルゴリズムとデータ構造(初歩)
アルゴリズムとデータ構造(初歩)
 
何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか
 
IoTのIを考えてみる話
IoTのIを考えてみる話IoTのIを考えてみる話
IoTのIを考えてみる話
 
AzureのIaaSとかの話
AzureのIaaSとかの話AzureのIaaSとかの話
AzureのIaaSとかの話
 
【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】品質ってなんなのさ【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】品質ってなんなのさ
 
【エンジニア勉強会】PMやってみた
【エンジニア勉強会】PMやってみた【エンジニア勉強会】PMやってみた
【エンジニア勉強会】PMやってみた
 

PostgreSQLの魅力_エンジニア勉強会20130702