【勉強会メモ】第6回 関西DB勉強会
遅刻して聴き逃したり、思いの外長丁場でMacのバッテリーが持たずにメモを取りきれなかった部分がありますがご了承ください。
たくさんグッズも頂いて充実した内容の勉強会だった。
Cloud上のDBの基礎的な話
発表者:高橋 直樹さん(Cloudpack)
AWS上で使えるDBの話。AWSもサービスがたくさんあって名前を聞けばなんとなくどういう機能か分かるが、DB系のサービスという軸でそれぞれを整理する機会はあまりないのでおさらいする意味で良い機会だった。
リレーショナルデータベース RDS
- 1時間毎の従量課金
- スケーリング可能
使えるDBMS
- Amazom Aurora
- MySQL
- MariaDB
- PostgreSQL
- Oracle
- SQL Server
ライセンスは課金に含まれる
NoSQLデータベース DymamoDB
インメモリキャッシュ ElasticCache
キャッシュによってWebアプリケーションを高速化
データウェアハウス Redshift
ストレージをSQLで操作 Athena
- S3がDBとして使える
- あまり大量データ解析には向かない
- 用途は限られる
クラウド利用の考え方
- コスト重要
- 使えば使うだけ課金される
- リージョン間の転送も課金
- サーバは止まる
- 止まっても動く設計が必要
- スケールアップではなくスケールアウト
- 責任共有モデル が重要
MySQL開発最新動向
発表者:日本オラクル株式会社 MySQL GBU 山﨑 由章さん
軽量で簡易的なソフトウェアというイメージもあったが、他のDBで当たり前となった機能は確実に吸収して進化しているようだ。
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で動作する
- データベースに知性を統合
- インテリジェンス+データベース
- コンプライアンス基準に適用
- SELECT * でやっても権限のあるものしか取れない
- Graphに対応
- Neo4jと互換性があるという意味ではない
- OSSイノベーション
- 色んなOSSと繋がる
- WindowsとLinuxでレプリケーションを組める
- 大規模対応⇒24TBのメモリに対応
SQL Server Linux
- 2016.11から毎月CPTリリース
- 2017.7 RC1⇒8月にRC2
- GA近日
使えない機能
パフォーマンス・リソース管理の仕組みについて
- SQL Server 6.5以前
- OSに直接スケジュール依存
- 大きな環境でクエリをたくさん実行すると問題
- SQL Server 7.0 から2000まで
- スケジュールは独自管理(UMS)
- CPUが効率的に使える
- 2005〜2016
- SQL OS
- UMS+各種リソース管理
- 動的管理ビュー⇒中で何をやっているかがわかる
- 2017 Linux
Linux版の対応機能
- sqlcmd
- sql-cli
- VS CodeのExtension
- New GUI Tool
- 現在開発中
- 全プラットフォームから利用可能
- 無償提供予定
- Management StudioはWindowsのみ
環境構築
「PostgreSQLエンジニアにとってのデータ分析プロジェクト:テクノロジーとその実践」
- データ分析プロジェクトをPostgreSQLで始めるべき10の理由
- データベースエンジニアがデータヘルスの2年間で見たもの
発表者:アップタイム・テクノロジーズ 永安 悟史さん
ブログ: PostgreSQL Deep Dive
www.slideshare.net
SQL Serverの中でも少し話題になっていたが機械学習などの技術によって分析関連の機能が充実してきているのが近年の流れでその軸でPostgreSQLの機能を紹介してもらえたのはありがたかった。データヘルスの話も興味深かったがメモがバッテリー切れで追いつかず割愛。
マエショリスト
- 前処理でデータがどうあるべきかを検討
- データの管理
- 高度な分析はしないが集計やレポーティングレベルはやる
ビックデータは過度な期待のピーク期から幻滅期へ
PostgreSQLの分析で使う機能
Foreign Data Wrapper
- 外部データをつなぐ
- 外部テーブル(他のDBMSも)に対してCRUDを実行できる
- 仮想的なViewみたいな形
- Database Link
マテビュー
ビューをキャッシュ
トランザクショナルなDDL
オンラインでスキーマの変更ができる
豊富なSQL
PGgigm使うと200倍早くなる
BRINインデックス
- このへんにあるやろというINDEX検索
- Block Rangeと呼ばれる塊の単位でmin/maxの値を保持する
TABLESAMPLE
データの何割かを使ってざっくり集計する
パラレルクエリ
ワーカープロセスと共同して処理
In-Database分析
サーバからデータを取り出さずにAnalyticsの処理を実行する
PL/Python , PL/Rなど
- あらゆるクエリを実行データベース内で完結させる
- Apach MADlib
pgRouting
- 巡回セールスマン問題
- 聖地巡礼の最短経路可視化