キムラデービーブログ

オープンソースデータベースを加速する「キムラデービー」のブログです。カレー日記を兼ねてます。なお著者は2010-06-01より日本オラクルに在籍していますが、本サイト(ブログ、またはウェブサイト)において示されている見解は、私自身の見解であって、オラクルの見解を必ずしも反映したものではありません。
MySQL 8.0.19が来た! その1: 明示表(Explicit Table)とTVC(Table Value Constructor)
0
    今週頭(2020-01-13)にMySQL 8.0.xのメンテナンスリリースである8.0.19が出ました。

    多くの機能が追加されましたが、本ブログではあまり他の人が取り上げなさそうなものをご紹介します。
    そのうちの一つ明示表(Explicit Table)について。

    リリースノートには以下の記述があります。

    Important Change: MySQL now supports explicit table clauses and table value constructors according to the SQL standard.

    VALUESについては以前以下の発表の中で触れました。Db2とPostgreSQLがサポートしている形式までいっきょにMySQL 8.0.19がサポートしたことになります。これはSQL標準でTable Value Constructor(TVC)と呼ばれるもの(F641)で、訳語としてはJISが表値構成子、Microsoftがテーブル値コンストラクターを使っています。

    INSERTには便利だが、まさかの展開: INSERT INTO ... VALUES(値1),(値2),...,(値n)

    また、Modern SQLでも以下の記事で紹介されています。

    select without from

    明示表(Explicit Table)については、ちょっと調べたところではCockrochDBがテーブル句(Table Clause)としてサポートしているだけのように見えました。

    SQL標準(JIS)では以下の部分となります。

    329X 3005-2:2015 (ISO/IEC 9075-2:2011) p.328, p.332

    5) <明示表>
    TABLE <表名又は問合せ名>は,次の<問合せ指定>と等価とする。
    SELECT * FROM <表名又は問合せ名>

    # Explicit Tableの確認とJISの訳語については土田正士さんに教えを請いました。ありがとうございました。

    また、Mimer SQL Validatorを使って確認する方法を以下のブログに追記しました。

    SQL標準の確認方法

    [2020-02-11 追記] その後いくつかのブログ記事で、明示表とTVCとりあげられました。

    values — Create Rows out of Nothing(modern SQL)
    MySQL 8.0.19 で追加された TABLE と VALUES(@tmtms のメモ)
    MySQL8.0.19で加わった VALUES を試してみる(sakaikの日々雑感〜(T)編)

    JUGEMテーマ:コンピュータ

    | meijik | MySQL | 08:17 | comments(0) | - | - | - |
    SQL標準の確認方法
    0
      SQL標準の確認方法

      とある事情によりしばしば参照するため自分用のまとめ。

      ■SQL標準そのもの
      古くはANSI, 最近はISOで行われているSQLの標準化。規格番号は以下になります。

      ISO/IEC 9075

      日本ではJISがX-3005として規格化しています。

      これらは正式なものには値段がついていて、書籍やpdfは購入する必要があります。

      英語版の正式なものの(安い)入手方法や、無料のものの参照方法は以下のエントリに詳しいです。

      Don't Tell Anyone: The SQL Standard is Public!

      英語版のWikipediaは結構参考になります。(たまに私も加筆しています。日本語版にも反映しなきゃなぁ。

      JIS版は翻訳などに時間がかかるため、最新の英語版には追随していません。少し遅れています。
      英語版の対応する規格のどの年度のものに対応するのかは、以下のページのそれぞれのpreviewで確認できます。

      JSA GROUP Webdesk>規格・書籍・物品>JIX X 3005

      それぞれWebからの閲覧のみ(印刷とダウンロード禁止)ならば、以下のページからx3005を検索すると確認できます。

      JIS検索

      簡易的にHTML化したものが見れるサイトもあるようです。

      ■SQL標準の解説本
       英語も日本語もSQL-99がほとんどでそのあとSQL標準の解説書はない状態です。

      日本語ではSQL-99についてスーパーテキストSQL:2003の一部解説がでたのみです。

      ■各RDBMSのマニュアル
       ほとんどのオンラインマニュアル(この記事の下のほうにリンク)は、一か所にまとめられて、通常使うコマンドのSQL準拠度についてはわかりにくくなっています。例えばMySQLでも、次のリンクのようになっています。

      1.7 MySQL の標準への準拠(MySQL 5.6 日本語マニュアル)
      1.8 MySQL Standards Compliance(MySQL 8.0 English Manual)

      わかりやすいものといえば、以下のPostgreSQLのマニュアルとSQL Anywhereのマニュアルです。各コマンドごとにSQL標準の準拠についての記述があります。

      PostgreSQL 11.x マニュアル(日本語)
      PostgreSQL 最新版マニュアル(英語)

      SQL Anywhere サーバー - SQLリファレンス(SQL Anywhere 17)
      SQL Anywhere サーバ SQLリファレンス(バージョン16)

      ■MimerのSQL構文チェッカーを使う[2020-01-17追記]
       Mimer Information Technology AB(Mimer AB)は組み込み用RDBMSであるMimer SQLを開発している会社。そのオリジナルは1970年代からウプサラ大学で開発されており、可能な限りSQL標準に準拠することをポリシーにしています。
       その会社がオンラインで以下のページを公開しており、これを利用することによりSQL-99にどの程度適合しているか、がわかります。適合してない場合でも、可能な限りSQL標準のどれかをお知らせしてくれます。

      SQL Validator -99(Mimer)

      例えば、MySQL 8.0.19でサポートされたTABLEステートメント「TABLE tbl1;」を上記バリデータに入力すると、以下のような出力結果がでます。

      Validated SQL: table tbl1;
      Validation result: The following feature outside Core SQL-99 is used:
      F661, "Simple tables"
      SQL queries stored anonymously for statistical purposes.

      これは、Core SQL-99外の機能が使われており、それはF661, "Simple tables"という機能であることがわかります。
      # SQLクエリは統計目的で、匿名で格納されることも明記されています。

      このF661をサポート・未サポートにかかわらず、詳細に記述されているマイクロソフトのドキュメントで検索「site://docs.microsoft.com F661」すると、以下のドキュメントで確認できます。

      2.1.2.90 F661, Simple tables

      <explicit table> ::=
      TABLE <table or query name>

      そして、まだSQL Serverでは未サポートということがわかります。

      Microsoft SQL Server 2008 R2 and Microsoft SQL Server 2012 vary as follows:
      Transact-SQL does not support this feature.

      JUGEMテーマ:コンピュータ



      | meijik | SQL | 21:23 | comments(0) | - | - | - |
      Firebird 4.0のレプリケーション(6) 非同期
      0
        Firebird 4.0のレプリケーション(6) 非同期

        Replication in Firebird 4:concepts and usageの続きを。

        Asynchronous replication: 同期レプリケーション
        ・Journal — contiguous sequence of segments: ジャーナル - セグメントの連続したシーケンス
        ・Linked to its corresponding database via UUID: UUID経由で、対応するDBにリンク
        ・Segments are uniquely (and sequentially) numbered: セグメントは一意に(そしてシーケンシャルに)番号付けされる
        ・Change blocks are written one after another,every block has an associated flush timestamp: 変更したブロックは次から次に書き込まれる。すべてのブロックが関連するフラッシュタイムスタンプを持つ
        ・Operational and archive journals: オペレーションとアーカイブのジャーナル

        JUGEMテーマ:コンピュータ



        | meijik | Firebird/InterBase | 21:39 | comments(0) | - | - | - |
        2020年の木村明治
        0
          去年はこんな抱負を出していましたが、まぁ2.がギリできていた(ライブにいった)くらいですかね。

          去年はとにかくスカートTHE SALMON PINKSがよかったですね。

          今年の抱負は以下。

          1.新しい本を出す(SQL関連)
          2.ライブにいく、ブログで発信する。
          3.分散処理本の読書会に継続して出る、か?

          まあ、去年の豊富の4.5.を省いたもんなんですが w スケートは去年の最後のほうの旅行で富士急ハイランドでやっただけで、実は今年は赤坂SAKASUのスケートはなかったんですよね。残念ながら。

          1.については、7つのデータベース(Oracle,SQL Server, IBM Db2, PostgreSQL, MySQL, Firebird, SQLite)とSQL標準をあわせて原稿書いているのですが、さすがに範囲が広くて、四苦八苦。年を越してしまいました。

          2.については、継続してライブにはいきたいと思います。ただ、あまり熱心なファンではなかったですが、首都圏に来ていた時にはライブにいっていた広島の渕上里奈さんが活動休止ということに年明け気づいてしまいました。

          【お知らせ】渕上里奈 活動休止について

          残念ですが、私も大学時代音楽をやっていたので、本当に音楽で食べていくのは大変なのは、身に染みてます。
          (同年代でデビューした人は何組かいましたが、メジャーになった人はおらず, IT業界でも元バンドマンたくさんいます)
          また新しい道でがんばってください。一度持っているCDを聞き直して、お便りしたいと思います。

          3.分散のほうは頭がついていかず、yabu.logとかぱと隊長日誌とかで、予習・復習しないとなぁ。

          JUGEMテーマ:日記・一般



          | meijik | 日々 | 09:12 | comments(0) | - | - | - |
          Firebird 4.0のレプリケーション(5)
          0
            Replication in Firebird 4:concepts and usageの続きを。

            Synchronous replication: 同期レプリケーション
            ・Every primary database keeps active connections to all the synchronous replica databases: すべてのプライマリDBはアクティブな接続をすべての同期レプリカDBに保持します。
            ・Replication packets are transferred via native remote protocol and Firebird API: レプリケーションパケットはネイティブのリモートプロトコルとFirebird APIを介して転送されます。
            ・Failed synchronous replica is excluded from replication, others remain working: 問題が発生した同期レプリカDBは、レプリケーションから除外されますが、他の残ったレプリカDBは継続稼働します。

            ログベースとなる他のRDBMS(MySQL, PostgreSQL)のレプリケーションとは、この部分は趣が違いますね。。。。

            JUGEMテーマ:コンピュータ



            | meijik | Firebird/InterBase | 17:43 | comments(0) | - | - | - |
            Firebird 4.0のレプリケーション(4)
            0
              Replication in Firebird 4:concepts and usageの続きを。

              Error handling: エラーハンドリング
              ・Every error is written to replication.log,: すべてのエラーはreplication.logに書かれます。
              prefixed with (primary | replica) side and database pathname: (primary | replica)サイドのプリフィックスと、データベースパスネームとあわせて。
              ・For synchronous replication, errors may be duplicated on the both sides: 同期レプリケーションの場合、エラーは両サイドに重複します。
              ・If error is persistent and affects user operations, : エラーが永続化され、ユーザオペレーションに影響するものの場合、
              replication is automatically disabled (at least partially): レプリケーションは自動的に無効化されます。(少なくとも部分的には)
              ・replication.log may also contain warnings,: replication.logは警告エラーをも含むかもしれません。
              they do not affect the replication flow: それらはレプリケーションフローには影響しません。

              JUGEMテーマ:コンピュータ



              | meijik | Firebird/InterBase | 17:24 | comments(0) | - | - | - |
              Firebird 4.0のレプリケーション(3)
              0
                Replication in Firebird 4:concepts and usageの続きを。

                Architecture:
                Never replicated(レプリケートしないもの)
                ・«De facto» read-only transactions: (デファクトで)読み取り専用トランザクション
                ・ External tables: 外部テーブル
                ・ Virtual tables: 仮想テーブル
                ・ Temporary tables: 一次テーブル
                ・ Any garbage collection activity: GC(ガベージコレクション)活動のすべて
                ・ System sequences, except RDB$BACKUP_HISTORY: RDB$BACKUP_HISTORY以外のシステムシーケンス
                ・ Some DDL commands:いくつかのDDLコマンド
                ALTER DATABASE, DROP DATABASE
                CREATE SHADOW, DROP SHADOW
                CREATE USER, ALTER USER, DROP USER

                JUGEMテーマ:コンピュータ



                | meijik | Firebird/InterBase | 07:08 | comments(0) | - | - | - |
                2020年のFirebird
                0
                  本エントリはFirebird Advent Calendar 2019の25日目です。

                  さて、2020年のFirebird ! といえば、まずは次版のFirebird 4.0の話になります。
                  ....と書いて、この話はもう三年くらいしてますねorz

                  2017年のFirebird

                  2018年のFirebird

                  2019年のFirebird

                  去年のクリスマスにでるか、といわれたBetaはBeta1が2019-02-20にリリースされました。

                  Firebird 4.0 Beta 1 release is available for testing

                  「しばしばリリース」を掲げましたが、やはり歩みはスローなままです(笑)
                  まずは、レプリケーションを実装した4.0が2020年中にリリースされることを期待します。

                  メリークリスマス&ハッピーニューイヤー!

                  JUGEMテーマ:コンピュータ



                  | meijik | Firebird/InterBase | 07:00 | comments(0) | - | - | - |
                  Firebird 4.0のレプリケーション(2)
                  0
                    Firebird 4.0のレプリケーション(2)

                    本エントリはFirebird Advent Calendar 2019の24日目です。

                    "Replication in Firebird 4:concepts and usage" のArchtecture : Specifics,Optimization (仕様と最適化)を見ます。

                    Specifics: 仕様
                    ・Both «changes» and «undos» are replicated : 変更とアンドゥの両方がレプリケートされます
                    ・Savepoint stack is preserved : セーブポイントのスタックは保存されます。
                    ・«Undos» are frame-based (using savepoints): アンドゥはフレームベースです。(セーブポイントに使われます)
                    Optimization : 最適化
                    ・Small rolled back transactions are not flushed,just discarded : 小さなロールバックトランザクションはフラッシュされず、捨てられます

                    コミットされたトランザクション以外が反映される仕組みが珍しいです。(というかはじめてみた)

                    さて、この調子では、レプリケーションは終わりません。また、来年以降続けたいと思います。

                    JUGEMテーマ:コンピュータ



                    | meijik | Firebird/InterBase | 07:08 | comments(0) | - | - | - |
                    Firebird 4.0のレプリケーション(1)
                    0
                      Firebird 4.0のレプリケーション(1)

                      本エントリはFirebird Advent Calendar 2019の23日目です。

                      "Replication in Firebird 4:concepts and usage" のArchtecture : Under the hood (内部構造)を見ます。

                      ・Replication is transaction-aware : レプリケーションはトランザクションを意識したものです。
                      ・Every transaction has internal replication buffer: すべてのトランザクションは内部レプリケーションバッファを持ちます。
                      (size is configurable, should be balanced) : サイズは調整可能で、バランスをとるべきです。
                      ・Buffer is flushed upon either: バッファーは以下のタイミングで「フラッシュ」されます。
                      o Size overflow : サイズを超えた場合
                      o Transaction commit / rollback: トランザクションがコミット/ロールバックされた場合
                      o Savepoint rollback: セーブポイントにロールバックされた場合
                      ・Every «flush» produces a replication packet (aka «change block»): すべての「フラッシュ」はレプリケーションパケット(いわゆる「チェンジ・ブロック」)を生成します。
                      ・Blocks are transferred to replica database(s) or written to the journal: 「ブロック」はレプリカデータベースに転送されるか、ジャーナルに書かれます。

                      ・Buffers are not always flushed synchronously: バッファーはいつも同期してフラッシュされるわけではありません。
                      ・Replication background thread per database: データベースごとにレプリケーション用バックグラウンドスレッド
                      ・Queue of «overflow» blocks to be flushed: オーバーフローしたブロックのキューはフラッシュされます
                      ・Lagging is limited to keep the throughput stable: スループットの安定を保持するために、ラグは制限されます

                      JUGEMテーマ:コンピュータ



                      | meijik | Firebird/InterBase | 06:30 | comments(0) | - | - | - |
                            1
                      2345678
                      9101112131415
                      16171819202122
                      23242526272829
                      << February 2020 >>
                      + RECOMMEND
                      100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊
                      100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊 (JUGEMレビュー »)

                      100人のうちの一人としてミックさんの本を推薦しています。
                      + RECOMMEND
                      MySQL 5.1 Plugin Development
                      MySQL 5.1 Plugin Development (JUGEMレビュー »)
                      Andrew Hutchings,Sergei Golubchik
                      MySQL 5.1 のプラグインを作るならこれ!
                      + RECOMMEND
                      AWKを256倍使うための本 (Ascii 256倍)
                      AWKを256倍使うための本 (Ascii 256倍) (JUGEMレビュー »)
                      志村 拓,鷲北 賢,西村 克信
                      ここにきてまさかの復刊。15〜16年前の本ですが、いまでも十分役立ちますよ!!
                      + RECOMMEND
                      Linux-DB システム構築/運用入門 (DB Magazine SELECTION)
                      Linux-DB システム構築/運用入門 (DB Magazine SELECTION) (JUGEMレビュー »)
                      松信 嘉範
                      Linux-DB システム構築の新スタンダード。DB Magazine人気連載、待望の書籍化です!!
                      + RECOMMEND
                      + RECOMMEND
                      超・極める!MySQL
                      超・極める!MySQL (JUGEMレビュー »)
                      坂井 恵,志村 和彦,ひろせ まさあき,松信 嘉範
                      内容は少々古くなりましたが、内部説明があり、いろいろ面白いです。
                      + RECOMMEND
                      The Root of .NET Framework
                      The Root of .NET Framework (JUGEMレビュー »)
                      荒井 省三
                      .NETの根っこをつかむ、か?
                      + RECOMMEND
                      エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド
                      エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド (JUGEMレビュー »)
                      奥野 幹也
                      これまでにない構築、そして構築後のMySQLのための本。
                      + RECOMMEND
                      Database Management Systems
                      Database Management Systems (JUGEMレビュー »)
                      Raghu Ramakrishnan,Johannes Gehrke
                      ミックさん連載の参考書籍です。
                      + RECOMMEND
                      Advanced Programming in the UNIX Environment: Paperback Edition (2nd Edition) (Addison-Wesley Professional Computing Series)
                      Advanced Programming in the UNIX Environment: Paperback Edition (2nd Edition) (Addison-Wesley Professional Computing Series) (JUGEMレビュー »)
                      W. Richard Stevens,Stephen A. Rago
                      必読! といいつつ私が読んだのは初版の日本語訳です。差分はチェックしないといけませんね。
                      + RECOMMEND
                      + RECOMMEND
                      + RECOMMEND
                      Western Digital Scorpio Blue 2.5inch 5400rpm 320GB 8MB PATA WD3200BEVE
                      Western Digital Scorpio Blue 2.5inch 5400rpm 320GB 8MB PATA WD3200BEVE (JUGEMレビュー »)

                      DELL SX260の換装用に購入。今はコチラのほうが安いですね。
                      + RECOMMEND
                      情熱プログラマー ソフトウェア開発者の幸せな生き方
                      情熱プログラマー ソフトウェア開発者の幸せな生き方 (JUGEMレビュー »)
                      Chad Fowler
                      OSC2010神戸に出展されたジュンク堂で買いました。
                      + RECOMMEND
                      Software Design 総集編 【2000~2009】(DVD付)
                      Software Design 総集編 【2000~2009】(DVD付) (JUGEMレビュー »)

                      メガトン級の過去記事。売り切れる前にお店に急げ!
                      + RECOMMEND
                      + RECOMMEND
                      玄人志向 2.5型HDDケース SATA対応USB2.0接続 GW2.5AI-SU2
                      玄人志向 2.5型HDDケース SATA対応USB2.0接続 GW2.5AI-SU2 (JUGEMレビュー »)

                      Aspire 1410 HDD換装後、昔のHDDはこれにいれます。
                      + RECOMMEND
                      + RECOMMEND
                      acer Aspire Timeline AS1410 11.6型ノートPC Windows7搭載 250GB ブラック AS1410-KK22
                      acer Aspire Timeline AS1410 11.6型ノートPC Windows7搭載 250GB ブラック AS1410-KK22 (JUGEMレビュー »)

                      色違い黒(他に青と白があります): メモリは最大4GBとあるが、がんばれば8GBいけるらしい。
                      + RECOMMEND
                      Firebird 徹底入門
                      Firebird 徹底入門 (JUGEMレビュー »)
                      木村 明治,はやし つとむ,坂井 恵
                      Firebird日本ユーザ会のはやしさん、そしてMyNAから拝借(?) してきた坂井さんとともに書きました。まだ誰も知らないFirebird 2.5や、いままでドキュメントのなかったツール類についてもソースを確認してとりあげた本です。是非ご活用ください。
                      + SELECTED ENTRIES
                      + RECENT COMMENTS
                      • たまたま「プリントヘッドの種類が違います」エラーから復活@MG6230
                        meijik (11/20)
                      • [ミュージシャンに聴かせたい・弾かせたい!] (4) 山田元気様
                        meijik (07/27)
                      • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
                        meijik (03/03)
                      • 2019年の木村明治
                        田中尚 (01/08)
                      • 使い慣れたSQLに潜む実装依存: Firebirdの場合(6) 文字列との結合演算子
                        noname (12/10)
                      • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
                        Moriaki_ (01/05)
                      • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
                        Moriaki_ (01/05)
                      • 2015年版 InterBaseの歩み
                        nakagami (12/06)
                      • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
                        meijik (11/22)
                      • 分散DB本読書会第46回メモ「STOP AFTER 10」
                        masudahidehiko (09/01)
                      + RECENT TRACKBACK
                      + CATEGORIES
                      + ARCHIVES
                      + MOBILE
                      qrcode
                      + LINKS
                      + PROFILE