Upgrade to Pro — share decks privately, control downloads, hide ads and more …

オープンソースRDBMS(Firebird/MySQL/PostgreSQL)新機能とついでにTsurugi

meijik
February 01, 2024

 オープンソースRDBMS(Firebird/MySQL/PostgreSQL)新機能とついでにTsurugi

NSEG2024新春フリープレゼン大会

meijik

February 01, 2024
Tweet

Other Decks in Programming

Transcript

  1. アジェンダ • 自己紹介 • オープンソースRDBMSの紹介 – ついでにTsurugi • 都市伝説 •

    オープンソースRDBMS御三家+α • イマドキ! の機能 – NoSQL、便利なSQL、HA、クラウド、etc
  2. 自己紹介 • 日本オラクルでMySQLサポートをしています。 – 漢と書いてオトコの同僚。 – 漢は「理論から学ぶデータベース実践入門 ~ リレーショナルモデルによる効率的なSQL」の著者 •

    DB関連のブログや書籍を書いてます。 – キムラデービーブログ – 「おうちで学べるデータベースのきほん(共著)」 • ミックさんの知り合い。外人じゃないよ。 • MyNA会員、Neo4Jユーザ会会員 • Firebird日本ユーザ会の理事長
  3. 私とRDBMS • 新卒にて日立関連会社に就職。HiRDBの開 発にチョット関わる。 • 転職して独立系ソフトウエアベンダーに – デスクトップRDBMSの開発に関わる。旧 OCI(Oracle Call

    Interface)/ODBCを利用した Oracle/SQL Server, Accessドライバを作成。 – 製品バンドル用のRDBMSとして PostgreSQL/MySQL/InterBase Open Edition(Firebirdの前身)を評価。InterBase採用。 – 製品PMとして、独自DBからMySQLへの移行。 • 無職・自営を経てMySQL技術サポート(現職)
  4. 私と長野(駅近辺) • 善光寺にお参りに来た(1回目) – 以前善光寺に来た時にさびれっぷりにびっくり。 – 甲斐善光寺だった – シン善光寺は長野 •

    善光寺にお参りにきた、そして横の美術館に いった(2回目) • 本日NSEG参加(3回目) • とみたさんとMySQLで、すのはらさんとなん となく知り合い
  5. OSS RDBMS御三家+αの紹介 • 日本ではPostgreSQL, MySQLが有名です が、ロシア・ヨーロッパ・南米ではFirebirdも有 名です。 • P M

    F でオープンソースRDBMS御三家と呼 びましょう。(と私が提唱してました  • 最近ではSQLiteがよく使われるように。 • 新顔として去年の秋、劔(Tsurugi)が登場しま した。 – PostgreSQL準拠のインターフェースあり。
  6. 都市伝説 • MySQL都市伝説 – バイナリカラムのバックアップがとれない。 – サブクエリがない。トランザクションがない – MyISAMがInnoDBよりはやい、機能が多い。 •

    PostgreSQL都市伝説 – Windows版がない。 – バキューム必要で動作時「世界が止まる」。 – MySQLより遅い。レプリケーションがない。 • Firebird/SQLite/Tsurugi 都市伝説自体なし。
  7. イマドキ! の機能 • イマドキ! の機能 – NoSQL,便利なSQL,HA,クラウド – 劔(Tsurugi)にみられるモダンな環境への適合 •

    メニーコア・インメモリ環境を前提 • 一貫性の担保 • 様々なインターフェースが同時に利用可能 • バッチ処理に秀でている – CCとしてOCCとLTX(バッチ処理を念頭においたプロトコル)
  8. 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インターフェース(現在実装中)
  9. 便利なSQL • 元々MySQLでは便利な独自SQLが多々ある – 他のRDBMSやSQL標準にも影響 • PostgreSQLはもともと積極的にSQL標準を サポートしてきた。最近は他のRDBMSの便 利な機能も実装 •

    Firebird/SQLiteもSQL標準には追随している – SQLiteは最近PostgreSQLを一部リファレンスに。 • TsurugiはPostgreSQLベースで必要なもの を順次サポートしている状況
  10. 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
  11. SQL: 2011 • Temporal データベース • その他しみじみとした機能改善 – MERGE内でのDELETE –

    パイプラインDML – CALL文の拡張 – Limited fetch – Collection type拡張 – Non-enforcedテーブル制約 – ウインドウ関数の拡張、等 17
  12. 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
  13. 行間パターン認識(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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 最近のロードマップ 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
  20. HA(Cluster) • クラッシュセーフであれば市販のクラスタソフ トウエアで対応できる – 共有ディスクでActive/Standby – DRBDでActive/Standby • PostgreSQLではcitus?

    MSが買収して一年 後にGA! – https://www.citusdata.com/ – 過去Postgre-XC, Postgre-XL, Postgre-X2(XC とXLの統合)等の開発が続いていました。 • Firebirdは….聞かないでください。。。。
  21. MySQL NDB Cluster • 自動シャーディング、マルチマスター • ACID 準拠のトランザクション, OLTP +

    Real-Time Analytics 読込み/書込み処理 に対する高い拡張性 • シェアードナッシング、単一障害点無し • 自動修復 + オンラインオペレーション 99.999% の高可用性 • オープンソース + 商用版 • コモディディハードウェア + 充実した管理ツール、監視ツール 低い TCO • Key/Value + SQL の柔軟性 • SQL + Memcached + JavaScript + Java + JPA + HTTP/REST & C++ SQL + NoSQL • インメモリデータベース + ディスクデータ • 非常に低いレイテンシ、短いアクセス時間 リアルタイム
  22. 33 OSSDBの二つのグループ 組み込みから ミドルレンジまでの機能強化 Firebird, SQLite エンタープライズ向けの 機能強化 MySQL, PostgreSQL,

    Tsurugi 商用データベースエンタープライズ 規 模 大 小 ミドルレンジは用途 によりどちらのグ ループでもOK
  23. クラウド(1) • MySQLやPostgreSQLはよく使われている – 素のバージョン(or 素に近いバージョン)が使われ ていたが。。。。 • クラウドのメリットをいかすための、独自の拡 張が行われている

    – 反面、クラウドならではの制限があったりします。 • RDSのMySQLでGTIDが使えない。など。→5.7以降 で可能になりました。 – https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/U serGuide/mysql-replication-gtid.html
  24. クラウド(2)MySQL互換 • Amazon Aurora – 高可用性と耐久性、スケーラビリティ – MySQL 5.7/8.0互換 •

    TiDB – TiDBサーバ、PDサーバ、TiKV, TiFlashで構成さ れる分散データベース – MySQL 5.7互換。最新版で8.0互換に対応。
  25. クラウド(3)PostgreSQL • Amazon Redshift – ペタバイト級のデータを扱えるデータウエアハウ ス • Amazon Aurora

    – PostgreSQL 9.6互換 – 最近は最新のバージョンに追随している。 • Tsurugi – フロントエンドがPostgreSQL互換
  26. クラウド(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) 」
  27. 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
  28. Thanks ! • ご静聴ありがとうございました。 – PotgreSQLは篠田さんや高塚さん、澤田さん、ぬ こさんの資料を参考にさせていただきました。 – SQL標準は土田さんの資料を参考にしました。 –

    TsurugiはいわゆるTsurugi本を参考にしました。 • OSS RDBMSは適材適所 – NoSQLとRDBMSも適材適所  • いろいろ使ってみてください!