radioc@?

レディオキャットハテナ

【勉強会メモ】第6回 関西DB勉強会

kansaidbstudy.connpass.com

遅刻して聴き逃したり、思いの外長丁場でMacのバッテリーが持たずにメモを取りきれなかった部分がありますがご了承ください。

f:id:radiocat:20170909235038p:plain

たくさんグッズも頂いて充実した内容の勉強会だった。

Cloud上のDBの基礎的な話

発表者:高橋 直樹さん(Cloudpack)

AWS上で使えるDBの話。AWSもサービスがたくさんあって名前を聞けばなんとなくどういう機能か分かるが、DB系のサービスという軸でそれぞれを整理する機会はあまりないのでおさらいする意味で良い機会だった。

リレーショナルデータベース RDS

  • 1時間毎の従量課金
  • スケーリング可能

使えるDBMS

ライセンスは課金に含まれる

NoSQLデータベース DymamoDB

  • 完全従量制
  • ストレージ制限なし
  • デスク増設とか不要
  • 3箇所のAZに自動保存
  • R/Wのスループット設定可能
  • DB操作はhttpベースのAPI

インメモリキャッシュ ElasticCache

キャッシュによってWebアプリケーションを高速化

データウェアハウス Redshift

ストレージをSQLで操作 Athena

  • S3がDBとして使える
  • あまり大量データ解析には向かない
  • 用途は限られる

クラウド利用の考え方

  • コスト重要
    • 使えば使うだけ課金される
    • リージョン間の転送も課金
  • サーバは止まる
    • 止まっても動く設計が必要
    • スケールアップではなくスケールアウト
  • 責任共有モデル が重要

MySQL開発最新動向

発表者:日本オラクル株式会社 MySQL GBU 山﨑 由章さん

軽量で簡易的なソフトウェアというイメージもあったが、他のDBで当たり前となった機能は確実に吸収して進化しているようだ。

www.slideshare.net

Oracle MySQL クラウドサービス

  • Enterprise EditionのMySQLが使える
    • 監査機能、バックアップ機能、監視機能が充実
    • MySQLチームのサポートを受けられる
  • SSHで直接OSにつなげる(Oracle Cloudとしての特徴)
  • 国内にはまだデータセンターなし

MySQL 8.0 DMR新機能

  • JSON対応
  • MySQL Shell
  • SQLを使わずJsやPythonで操作できる
  • InnoDBクラスタを素早く構築
  • GIS機能の拡張
    • geographyサポート
  • UTF-8
    • 最新ユニコード9.0のサポート
    • デフォルトはutf8mb4
    • 国ごとの照合順序
  • UUIDとビット処理改善
  • SELECT FOR UPDATE機能強化
    • SKIP LOCKED
    • NOWAIT
  • 新しいヒントの追加
    • JOIN順序を制御するヒント
  • 降順索引
    • 従来はdescで索引を作っても無視されていたが作成可能になった
  • 索引の仮削除
    • 削除してみたら遅くなったりすることがあるのでいったん見えなくしてから問題なければ消す
  • データディレクトリの改善
    • InnoDBを使ったData Dictionary
  • アトミックなユーザー作成、権限付与
  • Undo/Redo の暗号化
  • エラー情報を確認できるテーブル追加
  • 設定変更の永続化
    • DB稼働中にパラメータ変更可能
  • With句
    • 再帰的なクエリが実行可能
  • Window関数
    • 集計、ランキング、分析
  • オプティマイザーコストモデル改善

グループレプリケーションInnoDBクラスター・将来構想

Group Replication

  • MySQL 5.7から
  • グループ内のDBが同じデータを読み書きできる
  • 高可用性を実現

InnoDB Cluster

コンポーネントの組み合わせで構成する高可用性のフレームワーク

将来的にはこれらの機能強化によりマスタースレーブでのスケーリングやデータのシャーディングなどを実現していく構想

MySQLのロックについて

発表者:日本オラクル株式会社 MySQL GBU 山﨑 由章さん

MySQLでのハマりどころであるトランザクション分離レベルの話とSELECT FOR UPDATEの使い方について。

  • Oracleに近づけるならREAD COMMITTED
    • 行ロックになる
  • REPEATABLE READはテーブルロックになる
    • Indexが無いとフルスキャンするのでテーブルロックになる

ギャップロック

範囲指定などの時に更新範囲に現れる新しい行のファントムリードを防ぐためのレコードとレコードの間のロック

MariaDB Columnstore をテイスティング

発表者:JPMUG代表 カワノさん

MariaDB自体使ったことがないのであまり詳しいことはわからなかったが、大量データを扱うための仕組みらしい。例えとしてIoTで集めたデータという話もあったが、今後の需要を見越して絶賛開発中という印象。

MariaDB ColumnStore - MariaDB Knowledge Base

MariaDB Columnstoreとは?

  • チューニングレスて高い検索パフォーマンスを実現
  • DWH特化型
  • MySQL互換
  • 大規模並列処理

Extend Map

  • あるカラムのMin/Maxを保持する
  • 800万行ごとにデータをパーティショニングするイメージでI/O減らせる
  • データがばらついてないと効果が薄い
    • DATE型などのカラムが良さそう
  • チューニングレスなので細かいチューニングはできない

主な仕組み

  • 推奨スペック⇒8コアメモリ32ギガは必要
  • cpsadmin ⇒管理コマンド
  • cpimport ⇒データをインポート
    • インサート、アップデートは7が区切り文字
    • テーブルの全項目がインポート対象(使わなくても)
  • ロード時のバッブァサイズ⇒XMLファイルを変更、変えないと大容量は扱えない
  • クロスエンジン結合設定
    • 一部のカラムと結合できる
  • 統計情報
    • 専用の関数を使う
    • `explainでは有益な情報は得られない
  • Extend Mapの仕様
    • double、floatは使えない
    • Charは7バイトまで
    • VarCharは8バイトまで

1.1の新機能

9月にbetaが登場

  • Streaming API⇒バルクAPI⇒直接書き込みできる(CSVファイル不要)
  • ユーザー定義関数
  • TEXT型、Blob型に対応
  • バックアップ・リストアツール提供
  • Audit plugin(セキュリティ対応)
  • タブローに対応

GA直前!SQL Server 2017 Linux 版の深イイ話

発表者:日本マイクロソフト テクニカルエバンジェリスト 山本美穂さん

なぜLinux版?という疑問が会場でも多少議論を呼んでいたが、社内のLinuxサーバを使いまわして構築したり、Azure上で使いつつ開発や検証用に余ったLinux機を使って構築したり、WindowsよりもLinuxのほうが扱い慣れた開発者にとっては扱いやすかったりなど、幅を広げる点で意味はありそう。SQL Serverは管理ツールが扱いやすいので開発中のGUI Toolには期待したいところ。

AzureとAzure上で扱えるデータベースについて

  • Azureのバックボーンの転送はお金かからない
  • Azure SQLデータベース⇒Paas
    • データベースだけを利用者が管理
  • 過去7年で最もセキュリティの脆弱性パッチが少ない
  • あらゆる言語、プラットフォーム
    • Cosmos DB
    • Data Warehouse
    • HD Insight
    • Data Lake

SQL Server 2017

  • Windows以外にLinuxとDockerで動作する
  • データベースに知性を統合
  • インテリジェンス+データベース
    • RとPythonで学習済みの関数を使うことが可能
    • クエリの最適解を機械学習で導く
    • パフォーマンス改善⇒2〜10倍の速さ
  • コンプライアンス基準に適用
    • SELECT * でやっても権限のあるものしか取れない
  • Graphに対応
    • Neo4jと互換性があるという意味ではない
  • OSSイノベーション
    • 色んなOSSと繋がる
  • WindowsLinuxレプリケーションを組める
  • 大規模対応⇒24TBのメモリに対応

SQL Server Linux

  • 2016.11から毎月CPTリリース
  • 2017.7 RC1⇒8月にRC2
  • GA近日

使えない機能

  • PolyBase
  • Windows認証(Windowsのローカル認証)
    • AD認証は対応している

パフォーマンス・リソース管理の仕組みについて

  • SQL Server 6.5以前
    • OSに直接スケジュール依存
    • 大きな環境でクエリをたくさん実行すると問題
  • SQL Server 7.0 から2000まで
    • スケジュールは独自管理(UMS)
    • CPUが効率的に使える
  • 2005〜2016
    • SQL OS
    • UMS+各種リソース管理
    • 動的管理ビュー⇒中で何をやっているかがわかる
  • 2017 Linux
    • Windows on Bashと同じDrawBridgeという技術を使っている
    • ただしリソース管理は従来のSQL Serverと同じように管理する
    • Linuxとの間にLinux Host Extensionが仲立ち
    • SQL PAL⇒CPUのRing 3で実行
      • 各リソース向けのマネージャが管理してSQL OS v2が実行
      • カーネルモジュールに近い
    • Windows版とLinux版でパフォーマンスはほとんど変わらない
      • むしろLinuxのほうが少し高い

Linux版の対応機能

  • sqlcmd
  • sql-cli
  • VS CodeのExtension
  • New GUI Tool
    • 現在開発中
    • 全プラットフォームから利用可能
    • 無償提供予定
  • Management StudioはWindowsのみ

環境構築

  • Windows版よりLinuxのほうが楽
  • dockerはさらに簡単

PostgreSQLエンジニアにとってのデータ分析プロジェクト:テクノロジーとその実践」

  • データ分析プロジェクトをPostgreSQLで始めるべき10の理由
  • データベースエンジニアがデータヘルスの2年間で見たもの

発表者:アップタイム・テクノロジーズ 永安 悟史さん

ブログ: PostgreSQL Deep Dive

www.slideshare.net

SQL Serverの中でも少し話題になっていたが機械学習などの技術によって分析関連の機能が充実してきているのが近年の流れでその軸でPostgreSQLの機能を紹介してもらえたのはありがたかった。データヘルスの話も興味深かったがメモがバッテリー切れで追いつかず割愛。

マエショリスト

  • 前処理でデータがどうあるべきかを検討
  • データの管理
  • 高度な分析はしないが集計やレポーティングレベルはやる

ビックデータは過度な期待のピーク期から幻滅期へ

PostgreSQLの分析で使う機能

Foreign Data Wrapper

  • 外部データをつなぐ
  • 外部テーブル(他のDBMSも)に対してCRUDを実行できる
  • 仮想的なViewみたいな形
  • Database Link

マテビュー

ビューをキャッシュ

トランザクショナルなDDL

オンラインでスキーマの変更ができる

豊富なSQL

  • SQL標準準拠
    • ROLLUP
      • 小計と総計を一度に計算
    • GROUPING SETS
      • 複数のGROUP BY
  • JSONデータ型
    • テーブル形式からJSONに変換、その逆もできる
    • FluentdからJSONで取り込んでView表示するようなことができる

全文検索

PGgigm使うと200倍早くなる

BRINインデックス

  • このへんにあるやろというINDEX検索
  • Block Rangeと呼ばれる塊の単位でmin/maxの値を保持する

TABLESAMPLE

データの何割かを使ってざっくり集計する

パラレルクエリ

ワーカープロセスと共同して処理

In-Database分析

サーバからデータを取り出さずにAnalyticsの処理を実行する

PL/Python , PL/Rなど

  • あらゆるクエリを実行データベース内で完結させる
  • Apach MADlib
    • ポスグレ内部で機械学習の処理が実行できる
    • SQLで呼び出して予測問題やクラスタリングなどが実行できる
    • 一部データをWHERE句で除外してから予測するなどが簡単にできるのがDB内で実行できるメリット

pgRouting

  • 巡回セールスマン問題