企業間連携や IT 基盤のモダナイズなど、API の活用が広がり、国内でも API エコノミーが発展しつつあります。
API を最大限に活用するためには、セキュリティやアナリティクス、利用者サポートなど、いわゆる API 管理が重要です。
今回の放送では、Google Cloud の API 管理基盤、Apigee の特徴や機能概要、事例などをデモを交えて紹介します。
2017/9/7 db tech showcase Tokyo 2017(JPOUG in 15 minutes)にて発表した内容です。
SQL大量発行に伴う処理遅延は、ミッションクリティカルシステムでありがちな性能問題のひとつです。
SQLをまとめて発行したり、処理の多重度を上げることができれば高速化可能です。ですが・・・
AP設計に起因する性能問題のため、開発工程の終盤においては対処が難しいことが多々あります。
そのような状況において、どのような改善手段があるのか、Oracleを例に解説します。
企業間連携や IT 基盤のモダナイズなど、API の活用が広がり、国内でも API エコノミーが発展しつつあります。
API を最大限に活用するためには、セキュリティやアナリティクス、利用者サポートなど、いわゆる API 管理が重要です。
今回の放送では、Google Cloud の API 管理基盤、Apigee の特徴や機能概要、事例などをデモを交えて紹介します。
2017/9/7 db tech showcase Tokyo 2017(JPOUG in 15 minutes)にて発表した内容です。
SQL大量発行に伴う処理遅延は、ミッションクリティカルシステムでありがちな性能問題のひとつです。
SQLをまとめて発行したり、処理の多重度を上げることができれば高速化可能です。ですが・・・
AP設計に起因する性能問題のため、開発工程の終盤においては対処が難しいことが多々あります。
そのような状況において、どのような改善手段があるのか、Oracleを例に解説します。
7. SELECT * FROM writer CROSS JOIN publisher;
交差結合
7
writer
writer_id name age
1東野圭吾 57
2宮部みゆき 54
3村上春樹 66
id name
1001新潮社
1002講談社
1003⽂藝春秋
1004集英社
1005岩波書店
publisher
writer_id name age id name
1東野圭吾 57 1001新潮社
2宮部みゆき 54 1001新潮社
3村上春樹 66 1001新潮社
1東野圭吾 57 1002講談社
2宮部みゆき 54 1002講談社
3村上春樹 66 1002講談社
1東野圭吾 57 1003⽂藝春秋
... ... ... ... ...
⼆つのテーブルの直積(全組合せ)を求める
SELECT * FROM writer, publisher;
8. SELECT * FROM writer NATURAL JOIN novel;
⾃然結合
8
writer
writer_id name age
1東野圭吾 57
2宮部みゆき 54
3村上春樹 66
writer_id name age novel_id title pub_id year
1東野圭吾 57 101秘密 1 1003
1東野圭吾 57 102⽩夜⾏ 1 1004
1東野圭吾 57 103容疑者Xの献⾝ 1 1003
2宮部みゆき 54 104模倣犯 2 1001
... ... ... ... ... ... ...
novel
_id
title writer
_id
pub_id year
101秘密 1 1003 2001
102⽩夜⾏ 1 1004 2002
103容疑者Xの献⾝ 1 1003 2008
104模倣犯 2 1001 2005
...... ... ... ...
novel
⼆つのテーブルで同名のカラムで結合を⾏う
9. SELECT * FROM novel JOIN publisher
ON novel.pub_id = publisher.id;
等結合
9
novel_id title writer_id pub_id year id name
101秘密 1 1003 2001 1003⽂藝春秋
102⽩夜⾏ 1 1004 2002 1004集英社
103容疑者Xの献⾝ 1 1003 2008 1003⽂藝春秋
104模倣犯 2 1001 2005 1001新潮社
... ... ... ... ... ... ...
novel
_id
title writer
_id
pub_id year
101秘密 1 1003 2001
102⽩夜⾏ 1 1004 2002
103容疑者Xの献⾝ 1 1003 2008
104模倣犯 2 1001 2005
...... ... ... ...
novel
id name
1001新潮社
1002講談社
1003⽂藝春秋
1004集英社
1005岩波書店
publisher
⼆つのテーブルで条件に合致するもののみを結合
10. SELECT * FROM novel LEFT OUTER JOIN publisher
ON novel.pub_id = publisher.id;
左外部結合
10
novel_id title writer_id pub_id year id name
101秘密 1 1003 2001 1003⽂藝春秋
102⽩夜⾏ 1 1004 2002 1004集英社
103容疑者Xの献⾝ 1 1003 2008 1003⽂藝春秋
104模倣犯 2 1001 2005 1001新潮社
... ... ... ... ... ... ...
110使命と魂のリミット 1 1006 2010 NULL NULL
novel
_id
title writer
_id
pub_id year
101秘密 1 1003 2001
102⽩夜⾏ 1 1004 2002
103容疑者Xの献⾝ 1 1003 2008
104模倣犯 2 1001 2005
...... ... ... ...
novel
id name
1001新潮社
1002講談社
1003⽂藝春秋
1004集英社
1005岩波書店
publisher
左側のテーブルに対応するデータがない場合は,
NULL値をセットして結合する
11. SELECT * FROM novel RIGHT OUTER JOIN publisher
ON novel.pub_id = publisher.id;
右外部結合
11
novel_id title writer_id pub_id year id name
101秘密 1 1003 2001 1003⽂藝春秋
102⽩夜⾏ 1 1004 2002 1004集英社
103容疑者Xの献⾝ 1 1003 2008 1003⽂藝春秋
104模倣犯 2 1001 2005 1001新潮社
... ... ... ... ... ... ...
NULLNULL NULL NULL NULL 1005岩波書店
novel
_id
title writer
_id
pub_id year
101秘密 1 1003 2001
102⽩夜⾏ 1 1004 2002
103容疑者Xの献⾝ 1 1003 2008
104模倣犯 2 1001 2005
...... ... ... ...
novel
id name
1001新潮社
1002講談社
1003⽂藝春秋
1004集英社
1005岩波書店
publisher
右側のテーブルに対応するデータがない場合は,
NULL値をセットして結合する
12. SELECT * FROM novel FULL OUTER JOIN publisher
ON novel.pub_id = publisher.id;
完全外部結合
12
novel_id title writer_id pub_id year id name
101秘密 1 1003 2001 1003⽂藝春秋
102⽩夜⾏ 1 1004 2002 1004集英社
103容疑者Xの献⾝ 1 1003 2008 1003⽂藝春秋
104模倣犯 2 1001 2005 1001新潮社
... ... ... ... ... ... ...
110使命と魂のリミット 1 1006 2010 NULL NULL
NULLNULL NULL NULL NULL 1005岩波書店
novel
_id
title writer
_id
pub_id year
101秘密 1 1003 2001
102⽩夜⾏ 1 1004 2002
103容疑者Xの献⾝ 1 1003 2008
104模倣犯 2 1001 2005
...... ... ... ...
novel
id name
1001新潮社
1002講談社
1003⽂藝春秋
1004集英社
1005岩波書店
publisher
MySQLではサポート外
左側のテーブルを基準として結合
さらに,右側のテーブルを基準として結合
13. 内部結合と外部結合
13
SELECT * FROM t1 CROSS JOIN t2;
c1 c2
a 1
b 1
c 2
d 4
t1
c3 c4
1 x
2 y
3 z
t2
c1 c2 c3 c4
a 1 1 x
a 1 2 y
a 1 3 z
b 1 1 x
b 1 2 y
b 1 3 z
c 2 1 x
c 2 2 y
c 2 3 z
d 4 1 x
d 4 2 y
d 4 3 z
交差結合
SELECT * FROM t1 JOIN t2 ON t1.c2 = t2.c3;
SELECT * FROM t1 LEFT OUTER JOIN t2 ON t1.c2=t2.c3;
SELECT * FROM t1 RIGHT OUTER JOIN t2 ON t1.c2=t2.c3;
c1 c2 c3 c4
a 1 1 x
b 1 1 x
c 2 2 y
等結合=内部結合
c1 c2 c3 c4
a 1 1 x
b 1 1 x
c 2 2 y
d 4 NULL NULL
左外部結合
c1 c2 c3 c4
a 1 1 x
b 1 1 x
c 2 2 y
NULL NULL 3 z
右外部結合
22. スカラ副問合せ
(HAVING句の副問合せ)
22
SELECT name, count(*)
FROM novel, publisher
WHERE id = pub_id
GROUP BY pub_id
HAVING
count(*) >=
(SELECT
avg(c)
FROM
(SELECT
count(*) AS c
FROM
novel
GROUP BY pub_id)
AS t1);
avg(c)
2.000
name count(*)
新潮社 4
講談社 2
⽂藝春秋 2
27. 本⽇学習したSQLキーワード
27
ALL DROP TABLE ORDER BY
ALTER TABLE ... ADD DROP USER PRIMARY KEY
ALTER TABLE ... CHANGE EXISTS REFERENCES
ALTER TABLE ... DROP FOREIGN KEY REVOKE
ALTER TABLE ... MODIFY FULL OUTER JOIN RIGHT OUTER JOIN
ALTER TABLE ... RENAME AS GRANT SELECT
ANY GROUP BY SHOW COLUMNS FROM
AS HAVING SHOW DATABASES
ASC IN SHOW TABLES
avg INNER JOIN SOME
BETWEEN INSERT INTO sum
count JOIN UNIQUE
CREATE DATABASE LEFT OUTER JOIN UPDATE
CREATE TABLE LIKE USE
CREATE VIEW LIMIT WHERE
CROSS JOIN max
DELETE FROM min
DESC NATURAL JOIN
DISTINCT NOT EXISTS
DROP DATABASE NOT NULL
28. これまでに学習したSQLキーワード
28
ALL DROP TABLE ORDER BY
ALTER TABLE ... ADD DROP USER PRIMARY KEY
ALTER TABLE ... CHANGE EXISTS REFERENCES
ALTER TABLE ... DROP FOREIGN KEY REVOKE
ALTER TABLE ... MODIFY FULL OUTER JOIN RIGHT OUTER JOIN
ALTER TABLE ... RENAME AS GRANT SELECT
ANY GROUP BY SHOW COLUMNS FROM
AS HAVING SHOW DATABASES
ASC IN SHOW TABLES
avg INNER JOIN SOME
BETWEEN INSERT INTO sum
count JOIN UNIQUE
CREATE DATABASE LEFT OUTER JOIN UPDATE
CREATE TABLE LIKE USE
CREATE VIEW LIMIT WHERE
CROSS JOIN max
DELETE FROM min
DESC NATURAL JOIN
DISTINCT NOT EXISTS
DROP DATABASE NOT NULL