[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...Insight Technology, Inc.
いよいよリリースが間近に迫ったSQL Server 2017 Linux版。SQL Serverの第一人者 Dr. Kこと熊澤 幸生がリリース版を待ちきれずにRed Hat Enterprise Linux上で検証してみました。
Windows版と Linux版で果たしてSQL Serverの処理性能に差があるのか?注目の検証結果をいち早くお知らせします。
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...Insight Technology, Inc.
いよいよリリースが間近に迫ったSQL Server 2017 Linux版。SQL Serverの第一人者 Dr. Kこと熊澤 幸生がリリース版を待ちきれずにRed Hat Enterprise Linux上で検証してみました。
Windows版と Linux版で果たしてSQL Serverの処理性能に差があるのか?注目の検証結果をいち早くお知らせします。
SQL Server 使いのための Azure Synapse Analytics - Spark 入門Daiyu Hatakeyama
Japan SQL Server Users Group - 第35回 SQL Server 2019勉強会 - Azure Synapese Analytics - SQL Pool 入門 のセッション資料です。
Spark の位置づけ。Synapse の中での入門編の使い方。そして、Synapse ならではの価値について触れてます。
SQL Server 使いのための Azure Synapse Analytics - Spark 入門Daiyu Hatakeyama
Japan SQL Server Users Group - 第35回 SQL Server 2019勉強会 - Azure Synapese Analytics - SQL Pool 入門 のセッション資料です。
Spark の位置づけ。Synapse の中での入門編の使い方。そして、Synapse ならではの価値について触れてます。
DB TechShowcase Tokyo - Intelligent Data PlatformDaiyu Hatakeyama
AI (Artificial Intelligence) が様々なアプリケーション/サービスに組み込まれ始めて、それをうみだす原動力ともいえるデータプラットフォームもその立ち位置を変えてきています。次期SQL Server 2017には、Machine Learning Servicesが同梱され、まさに次世代のデータプラットフォームの一つの形といえるでしょう。このセッションでは、System of Record から、System of Insight へとその価値を変えていく最新のData Platformの世界をご紹介します。
Some might think Docker is for developers only, but this is not really the case.Docker is here to stay and we will only see more of it in the future.
In this session learn what Docker is and how it works.This session will be covering core areas such as volumes, but also stepping it up to a few tips and tricks to help you get the most out of your Docker environment.The session will dive into a few examples of how to create a database environment within just a few minutes - perfect for testing,development, and possibly even production systems.
Machine Learning explained with Examples
Everybody is talking about machine learning. What is it actually and how can I use it?
In this presentation we will see some examples of solving real life use cases using machine learning. We will define Tasks and see how that task can be addressed using machine learning.
SQL Server 2017でLinuxに対応し、その延長線でDocker対応やKubernetesによる可用性構成が組めるようになりました。そしてリリースを間近に控えたSQL Server 2019ではKubernetesを活用したBig Data Cluster機能の提供が予定されており、コンテナの活用範囲はさらに広がっています。
本セッションではこれからSQL Serverコンテナに触れていくための基礎知識と実際に触れてみるための手順やサンプルをお届けします。
11. 自動で最適化された一連の処理が実行される
11
select logistic_reg( 'fasttrack', 'PREDICTIVEMAINT.readingssample', 'asset_status', 'temperature, powerfactor,
airflow, pressure, vibration' ) ;
SELECT table_to_blob("asset_status","temperature","powerfactor","airflow","pressure","vibration" USING
PARAMETERS blob_name='fasttrack') OVER(PARTITION BEST) FROM (SELECT * FROM (SELECT *
FROM (SELECT "asset_status","temperature","powerfactor","airflow","pressure","vibration" FROM
PREDICTIVEMAINT.readingssample WHERE (NOT "asset_status" IS NULL AND NOT "temperature" IS NULL AND NOT
"powerfactor" IS NULL AND NOT "airflow" IS NULL AND NOT "pressure" IS NULL AND NOT "vibration" IS NULL) AND
("asset_status"=0 OR "asset_status"=1)) as filtered1 WHERE NOT "temperature"='inf' AND NOT "powerfactor"='inf'
AND NOT "airflow"='inf' AND NOT "pressure"='inf' AND NOT "vibration"='inf') as filtered2 WHERE NOT
"temperature"='-inf' AND NOT "powerfactor"='-inf' AND NOT "airflow"='-inf' AND NOT "pressure"='-inf' AND NOT
"vibration"='-inf') as filtered3;
(略)
SELECT public.reg_final_newton(xTransAz, xTransAx, deviance USING PARAMETERS
model_name='fasttrack', family=2, epsilon=1e-06, theLastIteration='false',
iterationNumber=-1, dimension=6) OVER() FROM (SELECT
public.reg_transition_newton( USING PARAMETERS model_name='fasttrack', family=2,
iterationNumber=-1, dimension=6, nodes='"v_testdrive_node0001";8')) AS udctf1;
(略)
SELECT public.reg_write_model('temperature','powerfactor','airflow','pressure','vibration' USING PARAMETERS
model_name='fasttrack', family=2, dimension=6, iterations=21, skippedRows=71,
processedRows=982, call='logistic_reg(''fasttrack'', ''PREDICTIVEMAINT.readingssample'', ''"asset_status"'',
''temperature, powerfactor, airflow, pressure, vibration''
SELECT remove_blob(USING PARAMETERS blob_name='fasttrack');
手動実行SQL
自動実行SQL
29. サマリー情報表示SQL
29
=> SELECT CASE
WHEN asset_status = 1
THEN 'DOWN'
WHEN asset_status = 0
AND r.riskscore > 0.1
THEN 'ATRISK'
ELSE 'OK'
END AS STATUS
,COUNT(*)
FROM PREDICTIVEMAINT.riskscores r
WHERE r.unixtimestamp = (
SELECT unixtimestamp
FROM PREDICTIVEMAINT.riskscores
GROUP BY unixtimestamp
ORDER BY unixtimestamp DESC
offset 1 limit 1
)
GROUP BY STATUS;
status | COUNT
--------+-------
OK | 19926
ATRISK | 33
DOWN | 41
(3 rows)
31. タワーマップ情報表示SQL
31
SELECT ROUND(a.latitude_degrees, 1) AS latitude
,ROUND(a.longitude_degrees, 1) AS longitude
,r.asset_status
,a.city_name AS city
,a.prov_state_tp_cd AS stateprov
,COUNT(*) AS tooltip_content
,TO_CHAR(MAX(CASE
WHEN
r.asset_status = 1
THEN
1.0
ELSE r.riskscore
END), 'FM0.0999')
AS riskvalue
FROM PREDICTIVEMAINT.riskscores r
LEFT JOIN PREDICTIVEMAINT.assetlocation al ON al.asset_id
= r.asset_id
LEFT JOIN PREDICTIVEMAINT.orgname o ON o.org_name_id =
al.asset_owner
LEFT JOIN PREDICTIVEMAINT.address a ON a.address_id =
o.address_id
WHERE (
(
a.latitude_degrees BETWEEN 25
AND 49
AND a.longitude_degrees
BETWEEN - 125
AND - 67
)
OR a.prov_state_tp_cd IN (
'AK'
,'HI'
)
)
AND r.unixtimestamp = (
SELECT unixtimestamp
FROM PREDICTIVEMAINT.riskscores
GROUP BY unixtimestamp
ORDER BY unixtimestamp DESC offset 1
limit 1
)
GROUP BY latitude
,longitude
,r.asset_status
,a.city_name
,a.prov_state_tp_cd
ORDER BY riskvalue DESC;
32. タワーマップ情報表示SQL
32
latitude | longitude | asset_status | city | stateprov | tooltip_content | riskvalue
----------+-----------+--------------+-----------------------+-----------+-----------------+-----------
34 | -118.5 | 1 | LOS ANGELES | CA | 1 | 1.0
36 | -86.8 | 1 | BRENTWOOD | TN | 1 | 1.0
34 | -84.2 | 1 | NORCROSS | GA | 1 | 1.0
41.2 | -96.1 | 1 | OMAHA | NE | 1 | 1.0
41.1 | -85.1 | 1 | FORT WAYNE | IN | 1 | 1.0
40.7 | -74 | 1 | NEW YORK | NY | 2 | 1.0
40 | -83.1 | 1 | COLUMBUS | OH | 1 | 1.0
39.7 | -75.6 | 1 | NEW CASTLE | DE | 1 | 1.0
45 | -93.3 | 1 | MINNEAPOLIS | MN | 1 | 1.0
40.3 | -74.1 | 1 | RED BANK | NJ | 1 | 1.0
45.5 | -122.7 | 1 | PORTLAND | OR | 1 | 1.0
37.4 | -121.9 | 1 | SAN JOSE | CA | 1 | 1.0
41.6 | -85.8 | 1 | GOSHEN | IN | 1 | 1.0
40.8 | -74 | 1 | NEW YORK | NY | 2 | 1.0
40 | -75.4 | 1 | RADNOR | PA | 1 | 1.0
43 | -85.7 | 1 | GRAND RAPIDS | MI | 1 | 1.0
41.1 | -76.2 | 1 | BERWICK | PA | 1 | 1.0
39.6 | -104.9 | 1 | GREENWOOD VILLAGE | CO | 1 | 1.0
25.8 | -80.2 | 1 | MIAMI | FL | 1 | 1.0
47.6 | -122.3 | 1 | SEATTLE | WA | 1 | 1.0
40.7 | -73.9 | 1 | NEWARK | NJ | 1 | 1.0
・・・
36. シミュレーター概要
パラメーター 概要
冷却塔数
Towers to launch
冷却塔の数を指定。タワーが多いほど、繰り返しの度にVerticaが取り込むデータを多
くするシミュレーションが可能。例えば、タワーごとに5つのセンサーを使用して5万
のタワーを打ち上げると、繰り返しごとに25万回の読み取りが行われる
測定値データの取り込み間隔(実際の秒数)
Real seconds between readings
タワーの測定値がどれくらいの間隔で取得されるかを制御。シミュレーションでは日、
週、および月にスケールアウトされた結果が表示される
シミュレーション終了前の測定値読み取り数
Readings to take before quitting
シミュレーション中に実行される反復回数。 たとえば、3秒ごとに測定値を取り込む
とすると、この値を1,200とすると、シミュレーションは1時間実行される
タワー故障の確率
Probability of a tower failure
冷却塔の動作が不安定となり、最終的に故障するまでの傾向を制御。 数値が大きい
ほど、タワーが劣化し始める可能性が高くなる
自動メンテナンスの遅延
Automatic maintenance delay
タワーが不安定になり始めると、ランダムな間隔で自動でトリガーされるメンテナン
スイベントをコントロール。これがいつ発生するかは正確には制御できないが、係数
を高い値に設定すると、メンテナンスイベントまでに時間がかかることになり、よっ
て、より多くのタワーが壊れることになる。これを低い値に設定すると、メンテナン
スイベントが平均してより速く発生する
一定の読み取り数ごとのモデルのリフレッシュ間
隔
Model refresh after every # of readings
FastTrackシミュレーターが実行されている間、ロジスティック回帰(予測)モデル
は、ここで指定した読み取りレコード数ごとに更新される
表示リフレッシュ間隔(秒)
Display refresh (in seconds)
指定された間隔でデータのページリフレッシュを制御
36
46. ボストン市街の道路の「穴」
Block Pothole Density:
各ブロックの穴の密度を計算
46
potholes ph blocks_idx roads rd
Spatial Join
[ph.id, block_id]
Spatial Join
[rd.id, block_id]
Group By
[block_id, count(ph.id)]
Group By
[block_id, count(rd.id)]
Join
[block_id, count(ph.id)/count(rd.id)]
Query Result
x
x
x
x pothole road
Block Pothole Density = 3/2
# potholes
# roads
補修すべきボストン市街の道路を分析する
60. 3. SQLを実行
結果をテキストに出力し、ツールにInput
-- Final query to find the number of potholes per road segment in every block
SELECT ph.block_gid, round(ph.potholes/rd.road_segs, 2.0) ph_per_rseg
FROM
-- Potholes per block
(SELECT block_gid, count(ph_gid) potholes
FROM (SELECT stv_intersect(gid, geom using parameters index=‘blocks_idx’)
OVER(PARTITION BEST) AS (ph_gid, block_gid) FROM boston_potholes) t
GROUP BY block_gid) ph,
-- Road segments per block
(SELECT block_gid, count(distinct road_gid) road_segs
FROM (SELECT stv_intersect(road_gid, road_pt using parameters
index='blocks_idx')
OVER(partition by road_gid) AS (road_gid, block_gid)
FROM (SELECT gid road_gid, stv_linestringpoint(geom)
over(partition by gid) AS road_pt FROM eotroads_35) t) t
GROUP BY block_gid) rd
WHERE ph.block_gid = rd.block_gid
ORDER BY ph_per_rseg DESC;
60