Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
オープンソースRDBMS(Firebird/MySQL/PostgreSQL)新機能とついでにTsurugi
Search
meijik
February 01, 2024
Programming
0
72
オープンソースRDBMS(Firebird/MySQL/PostgreSQL)新機能とついでにTsurugi
NSEG2024新春フリープレゼン大会
meijik
February 01, 2024
Tweet
Share
Other Decks in Programming
See All in Programming
AWS CDKコントリビュートTIPS / aws-cdk-contribution-tips
gotok365
4
330
Git Rebase
bkuhlmann
11
1.6k
Milestoner
bkuhlmann
1
410
スクラムガイドのスプリントレトロスペクティブを改めて読みかえしてみた / Re-reading the Sprint Retrospective Section in the Scrum Guide
mackey0225
3
480
使ってみよう Azure AI Document Intelligence
kosmosebi
2
360
VS Code をプロダクトにどう取り込むか
onomax
1
640
Polars入門
daikikatsuragawa
1
160
CREってこういうこと? 体験入社 - 提案資料 - / what-is-cre-trial-employment
shinden
1
500
try! Swift Tokyo 初参加報告LT
hinakko2
0
230
Azure OpenAI Serviceのプロンプトエンジニアリング入門
tomokusaba
3
860
Sheets API使ってみた
toshi0383
2
160
Build Apps for iOS, Android & Desktop in 100% Kotlin With Compose Multiplatform (mDevCamp 2024)
zsmb
0
420
Featured
See All Featured
Web development in the modern age
philhawksworth
203
10k
Ruby is Unlike a Banana
tanoku
96
10k
Navigating Team Friction
lara
179
13k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
352
28k
Automating Front-end Workflow
addyosmani
1357
200k
Fantastic passwords and where to find them - at NoRuKo
philnash
38
2.5k
Designing with Data
zakiwarfel
96
4.8k
GitHub's CSS Performance
jonrohan
1025
450k
Rebuilding a faster, lazier Slack
samanthasiow
74
8.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
7
1.3k
Fashionably flexible responsive web design (full day workshop)
malarkey
398
65k
5 minutes of I Can Smell Your CMS
philhawksworth
199
19k
Transcript
1 オープンソースRDBMS (Firebird 5.0/MySQL 8.x/ PostgreSQL 16)新機能(とつい でにTsurugi) NSEG2024新春フリープレゼン大会 Firebird日本ユーザ会
木村明治(@meijik)
免責事項 • 本プレゼンテーションにおいて示されている 見解は、私自身の見解であって、私の所属す る会社・団体の見解を必ずしも反映したもの ではありません。ご了承ください。 2
アジェンダ • 自己紹介 • オープンソースRDBMSの紹介 – ついでにTsurugi • 都市伝説 •
オープンソースRDBMS御三家+α • イマドキ! の機能 – NoSQL、便利なSQL、HA、クラウド、etc
自己紹介 • 日本オラクルでMySQLサポートをしています。 – 漢と書いてオトコの同僚。 – 漢は「理論から学ぶデータベース実践入門 ~ リレーショナルモデルによる効率的なSQL」の著者 •
DB関連のブログや書籍を書いてます。 – キムラデービーブログ – 「おうちで学べるデータベースのきほん(共著)」 • ミックさんの知り合い。外人じゃないよ。 • MyNA会員、Neo4Jユーザ会会員 • Firebird日本ユーザ会の理事長
私とRDBMS • 新卒にて日立関連会社に就職。HiRDBの開 発にチョット関わる。 • 転職して独立系ソフトウエアベンダーに – デスクトップRDBMSの開発に関わる。旧 OCI(Oracle Call
Interface)/ODBCを利用した Oracle/SQL Server, Accessドライバを作成。 – 製品バンドル用のRDBMSとして PostgreSQL/MySQL/InterBase Open Edition(Firebirdの前身)を評価。InterBase採用。 – 製品PMとして、独自DBからMySQLへの移行。 • 無職・自営を経てMySQL技術サポート(現職)
私と長野(駅近辺) • 善光寺にお参りに来た(1回目) – 以前善光寺に来た時にさびれっぷりにびっくり。 – 甲斐善光寺だった – シン善光寺は長野 •
善光寺にお参りにきた、そして横の美術館に いった(2回目) • 本日NSEG参加(3回目) • とみたさんとMySQLで、すのはらさんとなん となく知り合い
OSS RDBMS御三家+αの紹介 • 日本ではPostgreSQL, MySQLが有名です が、ロシア・ヨーロッパ・南米ではFirebirdも有 名です。 • P M
F でオープンソースRDBMS御三家と呼 びましょう。(と私が提唱してました • 最近ではSQLiteがよく使われるように。 • 新顔として去年の秋、劔(Tsurugi)が登場しま した。 – PostgreSQL準拠のインターフェースあり。
劔(Tsurugi)とは?: Tsurugi前夜 • 発端は(分散DB本|分散合意本)読書会 – 定番(?) と思われる本(英文)について、ノーチラス テクノロジーズの社長(当時)神林さんが音読、参 加者がそれにそって会話する。 –
隔週二時間で、数ページしか進まないこともアリ。
劔(Tsurugi)とは?: Tsurugi前夜 • (MVCC本|分散コンピューティング本)読書会 • +これらにかかわる論文や最新の論文読み – 一部はDB Techshowcase等で紹介される •
伝説の神林枠
劔(Tsurugi)リリース! • Tsurugiは国のバックアップ(NEDO)を受けて 作られた、純国産のOSS-RDB。もともと有志 の勉強会から始まったコミュニティ活動が ベース。各民間企業(ノーチラス・テクノロジー ズ/NEC)、大学(東京工業大学/慶応大学/名 古屋大学/大阪大学)、研究機関(国立天文 台)などが主体。簡単な紹介は以下の記事で。 –
https://xtech.nikkei.com/atcl/nxt/column/18/02 606/100500001/
劔Tsurugiリリース! • すべてはこの本に濃縮されています。 • 次世代高速オープンソースRDB Tsurugi – https://www.amazon.co.jp/dp/4296203231/
都市伝説 • MySQL都市伝説 – バイナリカラムのバックアップがとれない。 – サブクエリがない。トランザクションがない – MyISAMがInnoDBよりはやい、機能が多い。 •
PostgreSQL都市伝説 – Windows版がない。 – バキューム必要で動作時「世界が止まる」。 – MySQLより遅い。レプリケーションがない。 • Firebird/SQLite/Tsurugi 都市伝説自体なし。
イマドキ! の機能 • イマドキ! の機能 – NoSQL,便利なSQL,HA,クラウド – 劔(Tsurugi)にみられるモダンな環境への適合 •
メニーコア・インメモリ環境を前提 • 一貫性の担保 • 様々なインターフェースが同時に利用可能 • バッチ処理に秀でている – CCとしてOCCとLTX(バッチ処理を念頭においたプロトコル)
NoSQL • 高速化のための独自API/IF – MySQL NDB Cluster: MySQLインタフェースに 加え、 •
NDB API, ClusterJ – Tsurugi: PostgreSQLインターフェースに加え、 • 高レベルJava API(Iceaxe) • 低レベルJava通信ライブラリ(Tubakuro) • Web API, Dump/Load API, REPL, そして Serializable-KVSインターフェース(現在実装中)
便利なSQL • 元々MySQLでは便利な独自SQLが多々ある – 他のRDBMSやSQL標準にも影響 • PostgreSQLはもともと積極的にSQL標準を サポートしてきた。最近は他のRDBMSの便 利な機能も実装 •
Firebird/SQLiteもSQL標準には追随している – SQLiteは最近PostgreSQLを一部リファレンスに。 • TsurugiはPostgreSQLベースで必要なもの を順次サポートしている状況
SQL標準(SQL:2008より後で主要なもの) • SQL:2008, 2011, 2016, 2023 – SQL:2008 • MERGE
と DIAGNOSTIC の拡張 • TRUNCATE TABLE ステートメント • CASEのカンマ区切りWHEN句 • INSTEAD OF データベーストリガー • partitioned JOINテーブル, • いろいろなXQuery regular expression/pattern-matching 機能 のサポート • 導出カラム名の拡 16
SQL: 2011 • Temporal データベース • その他しみじみとした機能改善 – MERGE内でのDELETE –
パイプラインDML – CALL文の拡張 – Limited fetch – Collection type拡張 – Non-enforcedテーブル制約 – ウインドウ関数の拡張、等 17
Limited Fetchの例 • SELECTの結果行数を制限 • SQL標準ではSQL2008にてFETCH FIRST m ROWSの構文が定められ、同構文を元々 利用していたIBM
DB2と、DB2以外の商用 RDBMSの最近のバージョン(MS SQL Server 2012, Oracle 12c)でサポートされて いる。 • LIMIT句はSQL標準ではありませんが、 MySQLとPostgreSQL、IBMのMySQL互換 モードONにて利用できます。 18
SQL:2016 • 行間パターン認識機能「Row pattern recognition」 • 「JSON」への対応 • 外部ソースにアクセスし、表形式で出力する 「Polymorphic
table functions」 19
行間パターン認識(RPR) • RPR: Row Pattern Recognition – 2008年に提出されたプロポーザルの規格化 • MATCH_RECOGNIZE句
• Oracle Database 12cのみ実装 – MSのStream Analytics Query Languageでも 実装? – PostgreSQLで石井さんが16に対するパッチによ り実装中。 • 2023-11-24-JPUG-PostgreSQL-Conference- Japan-RPR-v2.pdf (sraoss.co.jp) 20
RPR, PostgreSQLでの実装 • 実はRPRには2種類ある – R010: Row pattern recognition: FROM
clause • FROMの後にMATCH_RECOGNIZEという句を追加、 そこにRPRの定義を書く – R020: Row pattern recognition: WINDOW clause: Window句にRPRを書く – 共通部分が多く、記述能力は大差ない • PostgreSQLはR020で実装 – RPRは、入力行の集合を何度もスキャンが必要 – Windows句でそのためのインフラが実装済み 21
SQL:2023 • SQLの現状追認、新規機能 – UNIQUE null treatment (F292) – GREATEST
and LEAST (T054) – String padding functions (T055) – Multi-character TRIM functions (T056) – Optional string types maximum length (T081) – Enhanced cycle mark values (T133) – ANY_VALUE (T626) 22
SQL:2023 • UNIQUE null treatment (F292) – CREATE TABLE t1
(a int, b int, c int, UNIQUE (a, b, c)); – INSERT INTO t1 VALUES (1, NULL, NULL); – INSERT INTO t1 VALUES (1, NULL, NULL); ↑これどうなる? • 許す(null DISTINCT): MySQL, PostgreSQL, SQLite等 • 許さない(null NOT DISTINCT): Oracle DB, SQL Server 23
SQL:2023 • ANY_VALUE (T626) – CREATE TABLE t1(a int, b
int); – SELECT a, sum(b) from t1 group by b; • 古いMySQLでは任意の値がでる。新しいMySQL(の デフォルト設定(sql_mode=only_full_group_by))では エラー。 – 解決策がANY_VALUE()サポートされていれば 扱える。PostgreSQLも16でサポート。 – SELECT any_value(a), sum(b) from t1 group by b; 24
SQL:2023 • 新しいJSON 機能 – JSON data type (T801) –
Enhanced JSON data type (T802) – String-based JSON (T803) – SQL/JSON • Hex integer literals in SQL/JSON path language (T840) • SQL/JSON simplified accessor (T860–T864) • SQL/JSON item methods (T865–T878) – JSON comparison (T879–T882) • Property Graph Queries (SQL/PGQ) 25
近年SQL標準の最大の功績 •CASE式 •ウインドウ関数 •JSON(多分) 26
最近のロードマップ 2016 201 7 201 8 201 9 202 0
2021 20 22 2023 2024 PostgreSQ L 9.6 10.0 11 12 13 14 15 16 MySQL 8.0 DMR 8.0 8.1 8.2 8.3 8.0.36 Firebird 3.0. 3 3.0. 4 4.0 4.0.4 3.0.11 5.0 Tsurugi 10月に 初リリー ス SQL標準 SQL: 2016 SQL:202 3
•祝! Firebird 5.0 リリース 2024-01-10
HA(Cluster) • クラッシュセーフであれば市販のクラスタソフ トウエアで対応できる – 共有ディスクでActive/Standby – DRBDでActive/Standby • PostgreSQLではcitus?
MSが買収して一年 後にGA! – https://www.citusdata.com/ – 過去Postgre-XC, Postgre-XL, Postgre-X2(XC とXLの統合)等の開発が続いていました。 • Firebirdは….聞かないでください。。。。
HA(Cluster):MySQL • ストレージエンジンとしてNDBを利用し、NDB 用に拡張したMySQL本体(mysqld)を含めて MySQL NDB Clusterとして提供 • ストレージエンジンとしてInnoDBを利用し、以 下の三つのコンポーネントを利用してInnoDB
Clusterとして提供(5.7.17以降) – MySQL Shell – MySQL Router – GR(グループレプリケーション)
MySQL NDB Cluster • 自動シャーディング、マルチマスター • ACID 準拠のトランザクション, OLTP +
Real-Time Analytics 読込み/書込み処理 に対する高い拡張性 • シェアードナッシング、単一障害点無し • 自動修復 + オンラインオペレーション 99.999% の高可用性 • オープンソース + 商用版 • コモディディハードウェア + 充実した管理ツール、監視ツール 低い TCO • Key/Value + SQL の柔軟性 • SQL + Memcached + JavaScript + Java + JPA + HTTP/REST & C++ SQL + NoSQL • インメモリデータベース + ディスクデータ • 非常に低いレイテンシ、短いアクセス時間 リアルタイム
InnoDB Cluser 32 MySQL シェル MySQL ルーター GR (グループ・ レプリケーション)
33 OSSDBの二つのグループ 組み込みから ミドルレンジまでの機能強化 Firebird, SQLite エンタープライズ向けの 機能強化 MySQL, PostgreSQL,
Tsurugi 商用データベースエンタープライズ 規 模 大 小 ミドルレンジは用途 によりどちらのグ ループでもOK
クラウド(1) • MySQLやPostgreSQLはよく使われている – 素のバージョン(or 素に近いバージョン)が使われ ていたが。。。。 • クラウドのメリットをいかすための、独自の拡 張が行われている
– 反面、クラウドならではの制限があったりします。 • RDSのMySQLでGTIDが使えない。など。→5.7以降 で可能になりました。 – https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/U serGuide/mysql-replication-gtid.html
クラウド(2)MySQL互換 • Amazon Aurora – 高可用性と耐久性、スケーラビリティ – MySQL 5.7/8.0互換 •
TiDB – TiDBサーバ、PDサーバ、TiKV, TiFlashで構成さ れる分散データベース – MySQL 5.7互換。最新版で8.0互換に対応。
クラウド(3)PostgreSQL • Amazon Redshift – ペタバイト級のデータを扱えるデータウエアハウ ス • Amazon Aurora
– PostgreSQL 9.6互換 – 最近は最新のバージョンに追随している。 • Tsurugi – フロントエンドがPostgreSQL互換
クラウド(4) • 自社開発のソフトで強みを生かす – OCI(Oracle Cloud Infrastructure)の MHS(MySQL HeatWave Service)
• HA構成で内部的にIC(InnoDB Cluster)が利用される。 • HW(HeatWave)構成が可能。この構成をAzureや AWSでも利用可能にしている。 – Microsoft Azueの Azure Cosmos DB for PostgreSQL clusters • 買収したCitusのCluster構成を利用 • 旧名は「Azure Database for PostgreSQL - Hyperscale (Citus) 」
OSS RDBMSバージョン別機能 • Firebird : 5.0 – https://firebirdsql.org/file/documentation/release_note s/html/en/5_0/rlsnotes50.html#rnfb50-new •
MySQL: 8.0/8.1/8.2/8.3 – https://dev.mysql.com/doc/refman/8.0/ja/mysql-nutshell.html – https://web.archive.org/web/20230718181015/https://dev.mysql. com/doc/refman/8.1/en/mysql-nutshell.html – https://web.archive.org/web/20231220004337/https://dev.mysql. com/doc/refman/8.2/en/mysql-nutshell.html – https://dev.mysql.com/doc/refman/8.3/en/mysql-nutshell.html • PostgreSQL: 16 – PostgreSQL16の新機能(Let’s POSTGRES) • https://lets.postgresql.jp/documents/technical/16
Thanks ! • ご静聴ありがとうございました。 – PotgreSQLは篠田さんや高塚さん、澤田さん、ぬ こさんの資料を参考にさせていただきました。 – SQL標準は土田さんの資料を参考にしました。 –
TsurugiはいわゆるTsurugi本を参考にしました。 • OSS RDBMSは適材適所 – NoSQLとRDBMSも適材適所 • いろいろ使ってみてください!