キムラデービーブログ

オープンソースデータベースを加速する「キムラデービー」のブログです。カレー日記を兼ねてます。なお著者は2010-06-01より日本オラクルに在籍していますが、本サイト(ブログ、またはウェブサイト)において示されている見解は、私自身の見解であって、オラクルの見解を必ずしも反映したものではありません。
Firebird 5.0のプラン:投票結果が多い機能(5)
0
    Firebird 5.0のプラン:投票結果が多い機能(5)

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

    "Top-voted tickets from the tracker" として十個とりあげられていますが、昨日の続きで9)10)を見ます。

    9) CORE-738 Add support for SQL Schemas
    10) CORE-670 New database object - Constants

    9) CORE-738 SQLスキーマ(Schema)のサポート
     SQL標準では四層構造で構成されますが、FirebirdとSQLiteは1ファイルでスキーマ=データベースの、二層構造です。
    そのためスキーマをサポートするとなると、現在のデータベース(1ファイル)内に複数のスキーマをおけるようにするか、SQLiteのように他のデータベースファイルに名前をつけてアタッチするか、にする必要があります。
    Firebird, SQLIte : 二層

     私としては、SQLite方式が手軽で分かりやすいんじゃないかなー、と思います。
    SQLite : Attachで他のDBファイル参照

    10) CORE-670 新しいデータベースオブジェクトConstants(コンスタンス: 定数)のサポート
     最初、Constraints(制約)かと思っていたら、コンスタント(定数)なんですよね。

     とりあえず、これはいらないかなー。

    さて、今週はこれでおわり。来週はレプリケーションを試してみます
    | meijik | Firebird/InterBase | 14:43 | comments(0) | trackbacks(0) | - | - |
    Firebird 5.0のプラン:投票結果が多い機能(4)
    0
      Firebird 5.0のプラン:投票結果が多い機能(4)

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

      "Top-voted tickets from the tracker" として十個とりあげられていますが、昨日の続きで7)8)を見ます。

      7) CORE-734 Full-Text indexing
      8) CORE-5148 Support native JSON datatype for columns as MySQL / PostgreSql
      #PostgreSqlは原文ママです。

      7) CORE-734 フルテキストインデックス
      一般的には転置インデックスを作成した全文検索の機能の実現に利用します。他RDBMSでのサポート状況は次のとおり。

      Oracle DB: Oracle Text
      SQL Server: フルテキスト検索
      IBM Db2: Db2 Text Search
      # ここらへんは古い?? -> テキスト・エクステンダー、ネット・サーチ・エクステンダー、およびテキスト情報エクステンダー

      PostgreSQL: pg_bigm, PGroonga
      MySQL: fulltext index(本体組み込み), Mroonga

      FirebirdもGroongaベースでやるとよさそうな気がします。。。。

      8) CORE-5148 ネイティブな JSON データタイプ(MySQL / PostgreSQLのような)のサポート
      見出しのように、MySQL, PostgreSQLのようなネイティブのデータ型がもとめられています。
      PostgreSQLとMySQLのJSON型サポートはそれぞれマニュアルをご参照ください。

      ・PostgreSQL
      9.15. JSON関数と演算子
      8.14. JSONデータ型

      ・MySQL
      [5.7] 11.5 The JSON Data Type
      [8.0] 11.5 The JSON Data Type

      JUGEMテーマ:コンピュータ



      | meijik | Firebird/InterBase | 08:44 | comments(0) | trackbacks(0) | - | - |
      Firebird 5.0のプラン:投票結果が多い機能(3)
      0
        Firebird 5.0のプラン:投票結果が多い機能(3)

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

        "Top-voted tickets from the tracker" として十個とりあげられていますが、昨日の続きで5)6)を見ます。

        5) CORE-796 Create Table as Select .…
        6) CORE-659 GIS implementation (opengis)

        5) CORE-796 SELECT結果でのテーブル作成(Create Table as Select .…)
        俗にCTAS(Create Table As Select)と呼ばれるこの操作は「テーブルのコピー」に使われます。「テーブルのコピー」という概念は以下の操作が含まれます。

        (1) テーブル定義のコピー((2)を除く)
        (2) インデックスや各種制約のコピー
        (3) データのコピー

        RDBMSの実装により、以下の方法があります。残念ながらFirebirdには方法がありません

        (a) CREATE TABLE new_table AS SELECT ... FROM old_table
        Oracle, MySQL, SQLite, PostgreSQL, Db2(WITH NO DATA)
        (b) SELECT ... INTO new_table FROM old_table
        SQL Server, PostgreSQL
        (c) CREATE TABLE new_table LIKE old_table
        Oracle, MySQL, PostgreSQL, Db2
        (d) CREATE TABLE new_table(LIKE old_table[,new_col_def,...])
        SQL標準

        (a),(b)は、(1),(3)のみがコピーされます。通常「SELECT * FROM」を利用して、テーブルの
        すべてをコピーしますが、古いテーブルへのSELECT文で指定カラムだけを新しいテーブルに反映したり、
        WHERE句に条件をつけて、選択されたデータだけ新しいテーブルに反映する、ということもできます。

        (c)は(1),(2)のみがコピーされます。そのため、(1),(2),(3)すべてを満たすため
        には、作業の後、欠損した情報を補完するか、SQL以外の独自コマンド、ツールを利用
        する必要があります。(テーブル単位のバックアップ・リストアツールがあれば、それ
        を利用するのが簡単でしょう)

        [MySQLの例](c)にINSERT ... SELECTで欠損を補う
        CREATE TABLE new_table LIKE old_table;
        INSERT INTO new_table SELECT * FROM old_table;

        (d)はSQL標準で定められているもので、(c)に似ていますが、以下の点が違います。
        ・(1)のみがコピーされ、(2)はコピーされない
        ・カラムを追加定義できる。

        (a)で使われているCREATE TABLE new_table AS SELECTは、デフォルトではDb2ではMQT(マテビュー相当
        の実体化したビュー)の作成になります。WITH NO DATAを追加して結果を表として作成することを明記してください。

        Firebirdには(a),(c)の組でサポートしてほしいですね。Oracle DB, MySQL, PostgreSQL, Db2と同様に。
        (a)はローカルなテンポラリテーブル作成にも使われるので、必須です。

        6) CORE-659 GIS 実装 (opengis)
         PostGIS, MySQL 5.7の本体への実装、Oracle DBの拡張無償化など、いまホットなGIS実装が要望されています。
        盛り上がりは去年の以下のアドベントカレンダーをご参照ください。

        RDBMS-GIS(MySQL,PostgreSQLなど) Advent Calendar 2018

        今年もやっていますが、ちょっと告知が遅くまだ埋まっていません。ぜひみなさんもチャレンジしてみませんか?

        RDBMS-GIS(MySQL,PostgreSQLなど) Advent Calendar 2019

        明日は7)8)の予定です。

        JUGEMテーマ:コンピュータ



        | meijik | Firebird/InterBase | 09:03 | comments(0) | trackbacks(0) | - | - |
        Firebird 5.0のプラン:投票結果が多い機能(2)
        0
          Firebird 5.0のプラン:投票結果が多い機能(2)

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

          "Top-voted tickets from the tracker" として十個とりあげられていますが、昨日の続きで3)4)を見ます。

          3) CORE-776 Database Links
          4) CORE-808 Add support for INTERSECT and EXCEPT data set operators

          3) CORE-776 データベースリンク
          動作しているインスタンス以外のテーブルを参照(できれば広義の更新も)したいというのは根強いニーズだと思います。それを手軽に行えるのがデータベースリンクです。同種のもの(例: OracleからOracleへ)をつなぐホモジニアスなもの、他のデータベースをつなげれるヘテロジニアスなもの、さらにデータベース以外への接続ができるものがあります。

          各RDBMSでの実装状況は以下のとおり。
          Oracle: dblink, Oracle Database Gateway(Oracle Transparent Gateway)
          SQL Server: リンクサーバーPolyBase
          IBM Db2: ニックネームdblink(Oracle互換)
          PostgreSQL: dblink(contrib), dblink(Enterprise DBでのOracle互換)
          MySQL: Federated, FederatedXCONNECT(MariaDB)

          □Firebird, SQLiteの場合
           これらは二層構造、つまりデータベースをひとつのファイルとして表現するために、他のRDBMSとは違って、他のデータベースを通常の修飾にて参照することはできません。
           SQLiteでは他のデータベースファイルを簡単に参照する方法としてATTACHコマンドで修飾名をつけて参照することができます。たとえば以下のように設定すると、file.db内のt1テーブルをaux.t1として参照できます。

          ATTACH 'file.db' AS aux;

           Firebirdの場合は、外部クエリ(External Query)という方法で、他のデータベースファイルを参照することができます。
          外部クエリはPSQLにて記述するため、Firebirdの無名ブロック実行の手段であるEXECUTE BLOCKにて実行するか、
          ストアドプロシジャ内に記述して、選択型ストアドプロシジャ(あたかも、表のようにストアドプロシジャを扱うことができる)として利用します。一度きりの利用なら前者を、たびたび利用するものであれば後者を利用してください。詳細については以下の書籍を参照のこと。

          Firebird 徹底入門 8.5 リモートデータベースへのアクセス

          4) CORE-808 INTERSECT と EXCEPT のデータセットオペレータのサポート
           以下のブログ記事をご参照ください。

          あなたのDBはINTERSECTとEXCEPTをサポートしているかどうか。Firebird(とMySQL)はしてねえっす。(キムラデービーブログ)

          MySQLの場合は、以下の機能リクエスト(FR: Feature Request)がでてます。

          Bug #1309 EXCEPT statement
          Bug #31336 provide intersect and except, not only union

          これらを含む「5.8(現在は8.0としてリリース済み)にほしい機能は? 」に各種要望がまとめられています。

          「MySQL 5.8に欲しい機能は?」って中の人がブログ書いてる件を3か月遅れで(日々の覚書)

          JUGEMテーマ:コンピュータ



          | meijik | Firebird/InterBase | 17:30 | comments(0) | trackbacks(0) | - | - |
          Firebird 5.0のプラン:投票結果が多い機能(1)
          0
            Firebird 5.0のプラン:投票結果が多い機能(1)

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

            "Firebird on the road from V4 to V5"の最後のほうで、
            "Top-voted tickets from the tracker" として十個とりあげられていますので
            それを見ます。まぁ、単なる要望なので実際に実装されるかどうかわかりません。
            本日はそのうちの1)と2)を見ます。

            1) CORE-743 Job / Task Scheduler
            2) CORE-720 Local temporary tables

            1) CORE-743 ジョブ/タスクスケジューラー
             OSのジョブスケジューラー(LinuxのcronやWindowsのatコマンド)もありますが、データベースでは独自にこの機能を提供しているものが多々あります。一般的なRDBMSの実装状況は次のとおり。

            Oracle DB: DBMS_JOBもしくはDBMS_SCHEDULERパッケージ
            SQL Server:SQL Server エージェント
            IBM Db2:管理用タスク・スケジューラー
            PostgreSQL: pgAgent
            MySQL: イベントスケジューラ(本体機能)

             単純に実装するのであれば、MySQLのイベントスケジューラ相当のもの、つまりローカルのMySQLサーバー内で、ひとつの接続的に動作するスレッドでの動作、がよいと思います。いろいろやる(特に外部コマンドの実行)のであれば、やはり別プロセスで動作させたり、リモートでの実行(リモート先にAgent相当のものをインストール)
            ということになりますが、ちょっとFirebirdにはオーバースペックな印象です。

             個人的にはMySQL相当のものの実装を期待します。

            2) CORE-720 ローカルの一時テーブル
             Firebird(そしてOracle, Db2も同様)の一時テーブルはSQL標準に準拠した動作をするグローバルの一時テーブルです。

            CREATE GLOBAL TEMPORARY TABLE table_name(create_definition [, ...]) [ON COMMIT {DELETE|PRESERVE} ROWS]

            作成された一時表はスキーマ内に残り、セッションの終了時には削除されません。
            同じ名前のテンポラリテーブルは、セッションが違っても作成できません。しかしながら、セッションが異なればデータ内容は異なります。

             よりMySQLやSQL Serverの一時表に近い動作をする一時表として、Oracleは18cからCREATE PRIVATE TEMPORARY TABLEが、Db2では以前から使われているDECLARE GLOBAL TEMPORARY TABLEが利用できます。「ローカル」ということであれば、現状MySQLやPostgreSQLでサポートされているもの(SQL Serverの#付の一時表に近いもの)がアプリケーションプログラムからは扱いやすいと思います。

            IBM Db2のDECLAREとCREATEの違いはこちら。

            DB2 9.7 小ネタ - CREATE GLOBAL TEMPORARY TABLEで一時表が作成可能になった(Unofficial DB2 BLOG)

            Firebirdが最初に実装したときの話はこちら。

            Firebird 2.1の新機能(2) グローバル一時表(キムラデービーブログ)

            JUGEMテーマ:コンピュータ



            | meijik | Firebird/InterBase | 06:04 | comments(0) | trackbacks(0) | - | - |
            Firebirdのround()の話
            0
              Firebirdのround()の話

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

              以下の二つのブログ記事に触発されて、Firebirdの動作を確認するものです。

              PostgreSQLのround()の話

              Oracle Databaseのround()の話

              短くまとめると、人はround()に四捨五入を期待するけど、その動作は誤差のない数値(NUMBER, DECIMAL, NUMERIC、等のいわゆるexact-value)を引数にしたときだけであって、誤差のでる数値(DOUBLE PRECISION, FLOAT、等のいわゆるapproximate-value)のround()の場合は、実装により、exact-value同等に処理される場合も、誤差がでる場合もあるし、内部的にCライブラリを使っていると銀行家の丸め(Banker's round)になる実装もあるよ、ということです。

              Firebirdの場合は、後程実際に試しますが、動作としてはIBM Db2やMicrosoft SQL Serverのように、科学的方法を試みている、ように見えます。(Firebird 4.0 on Win10)

              セルコ(Joe Celko)の「プログラマのためのSQL 第四版 日本語版(翻訳: ミックさん)」では以下のように記述されています。

              SQLは丸めについても標準では何も決めていない。プログラミングにおける丸めの方法は、代表的なものが2つある。科学的方法と商業的方法である。
              科学的方法は、いわゆる我々が学校で習う四捨五入である。これは一般に小さな数に向いている。商業的方法は、一風変わっている。端数が1〜4ならば切り捨て、
              6〜9ならば切り上げる。ここまでは科学的方法と変わらないが、違うのは端数が5の場合である。
              商業的方法では、切り捨てと切り上げのうち結果が偶数となるほうへ丸める【訳注10】。

              ミックさんの訳注10は以下のとおり。リンク先は消滅していたので、同等のドキュメントにリンクしなおしました。

              商業的方法は「偶数丸め」とも呼ばれる。丸めの対象桁の数値が5の場合、切り上げられたり切り下げされたりして、結果が常に偶数になる。
              この方式を採用しているソフトウェアとして、Microsoft AccessのROUND関数がある。
              以下のMicrosoft社のドキュメントも参照。

              ●[OFFXP]VBAのRound関数について

              Firebirdでの実行結果は以下のとおり。2.5はすべて四捨五入されて3になっています。

              CREATE TABLE rd_table(c1 numeric(3,1), c2 double precision,c3 float);
              INSERT INTO rd_table VALUES (2.1, 2.1, 2.1);
              INSERT INTO rd_table VALUES (2.2, 2.2, 2.2);
              INSERT INTO rd_table VALUES (2.3, 2.3, 2.3);
              INSERT INTO rd_table VALUES (2.4, 2.4, 2.4);
              INSERT INTO rd_table VALUES (2.5, 2.5, 2.5);
              INSERT INTO rd_table VALUES (2.6, 2.6, 2.6);
              INSERT INTO rd_table VALUES (2.7, 2.7, 2.7);
              INSERT INTO rd_table VALUES (2.8, 2.8, 2.8);
              INSERT INTO rd_table VALUES (2.9, 2.9, 2.9);
              INSERT INTO rd_table VALUES (3.0, 3.0, 3.0);

              select c1, round(c1), round(c2), round(c2,0), round(c3), round(c3,0) from rd_table;

              C1 ROUND ROUND ROUND ROUND ROUND
              ======= ======= ======================= ======================= ============== ==============
              2.1 2 2.000000000000000 2.000000000000000 2.0000000 2.0000000
              2.2 2 2.000000000000000 2.000000000000000 2.0000000 2.0000000
              2.3 2 2.000000000000000 2.000000000000000 2.0000000 2.0000000
              2.4 2 2.000000000000000 2.000000000000000 2.0000000 2.0000000
              2.5 3 3.000000000000000 3.000000000000000 3.0000000 3.0000000
              2.6 3 3.000000000000000 3.000000000000000 3.0000000 3.0000000
              2.7 3 3.000000000000000 3.000000000000000 3.0000000 3.0000000
              2.8 3 3.000000000000000 3.000000000000000 3.0000000 3.0000000
              2.9 3 3.000000000000000 3.000000000000000 3.0000000 3.0000000
              3.0 3 3.000000000000000 3.000000000000000 3.0000000 3.0000000

              JUGEMテーマ:コンピュータ



              | meijik | Firebird/InterBase | 17:32 | comments(0) | trackbacks(0) | - | - |
              "Firebird on the road from V4 to V5"(8) Firebird 4でのタイムゾーン管理
              0
                "Firebird on the road from V4 to V5"(8) Firebird 4でのタイムゾーン管理

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

                本日は「Firebird 4.0 Preview」パートのタイムゾーン管理について、一昨日昨日の続きから説明します。

                ・すべてのセッションに対するデフォルトのタイムゾーンはfirebird.confで設定できます。(DefaultTimeZone設定)
                ・タイムゾーンはセッションごとに上書きできます。(DPB経由)
                ・タイムゾーンは実行時に変更できます。
                SET TIME ZONE
                ・タイムゾーンは実行時にリセットできます。
                SET TIME ZONE LOCAL

                # DPBはデータベースパラメータブロックです。C APIから接続時に指定します。
                直接の説明ではないですが、Firebird 2.5のドキュメントを参照しておきます。

                API(アプリケーションプログラミングインタフェース)の拡張

                JUGEMテーマ:コンピュータ



                | meijik | Firebird/InterBase | 08:59 | comments(0) | trackbacks(0) | - | - |
                "Firebird on the road from V4 to V5"(7) Firebird 4でのタイムゾーンサポート(2)
                0
                  "Firebird on the road from V4 to V5"(7) Firebird 4でのタイムゾーンサポート(2)

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

                  本日は「Firebird 4.0 Preview」パートのタイムゾーンサポートについて、昨日の続きから説明します。

                  ・AT表記は(日付)時刻の値を、他のタイムゾーンに変換します。
                  select current_timestamp at time zone 'America/Sao_Paulo'
                  または
                  select timestamp '2018-01-01 12:00 GMT' at local
                  ・EXTRACT は拡張されました。
                  TIMEZONE_HOUR と TIMEZONE_MINUTE
                  ・CURRENT_TIME と CURRENT_TIMESTAMP はUTC時間を返すように変更されました。
                  ・レガシー(WITHOUT TIME ZONE)な時間を返すLOCALTIME と LOCALTIMESTAMPが追加されました。

                  順にみますね。

                  ・AT表記(AT expression)
                  "AT LOCAL", "AT TIME ZONE 〜"は、Oracle 9iでサポートされSQL標準になっています。
                  これはTIMESTAMP WITH TIME ZONEとあわせてのサポートですので、これがサポートされていないMySQL, IBM Db2, SQLiteにはありません。

                  それ以外のRDBMSでは以下の対応です。

                  Oracle DB: サポート。(9i以降)
                  SQL Server: サポート(2016以降)
                  PostgreSQL: サポート(7.3以降)

                  詳細はそれぞれPostgreSQLのマニュアル(11)をご参照ください。たぶん、そのほうがわかりやすいので。

                  EXTRACT
                  ・CURRENT_TIME と CURRENT_TIMESTAMP
                  ・LOCALTIME と LOCALTIMESTAMP


                  ただし、CURRENT_%が「トランザクション開始時」になるのはPostgreSQLのみです。

                  FirebirdでPostgreSQL(標準SQL?)のCURRENT_TIMESTAMPを模倣

                  ついでに、Oracle DBのLOCALTIMESTAMPのリンクもはっておきます。

                  JUGEMテーマ:コンピュータ



                  | meijik | Firebird/InterBase | 06:00 | comments(0) | trackbacks(0) | - | - |
                  "Firebird on the road from V4 to V5"(6) Firebird 4でのタイムゾーンサポート
                  0
                    "Firebird on the road from V4 to V5"(6) Firebird 4でのタイムゾーンサポート

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

                    "Firebird on the road from v4 to v5"はFirebirdの初日に行われた最初のセッションで、
                    Firebird Projectのドミトリィ・ヤマノフ(Dmitry Yemanov)により行われました。資料は以下のリンクから取得できます。

                    "Firebird on the road from v4 to v5"

                    本日は「Firebird 4.0 Preview」パートのタイムゾーンサポートについて説明します。

                    Firebird 3.0までは日付時刻型ではタイムゾーンの扱いはできませんでした。
                    そのため、ローカルタイムで統一して利用するか、UTCで格納して、クライアント側でタイムゾーンを意識した操作をする必要がありました。

                    Firebird 4.0ではこれを容易に扱うためにSQL標準(SQL:2008)に従ったWITH TIMEZONEをサポートすることになりました。

                    ・TIME[STAMP] WITHOUT TIME ZONE タイムゾーンなしのTIME[STAMP](デフォルト)
                    ・TIME[STAMP] WITH TIME ZONE
                    ・タイムゾーン情報のために2-byte追加
                    タイムソーンはリージョン名での定義、例えば
                    '10:00 America/Los_Angeles'
                    もしくGMT(UTC)からの差異(時:分)、例えば下記で定義
                    '10:00 -08:00' or '10:00 -08'
                     Time / timestamp 部分はUTCとして(compared, sorted)格納
                     タイムゾーンは≪そのまま(as is)≫格納

                    他のデータベースの実装状況は以下のとおりです。(WITH TIME ZONE省略時のデフォルトはWITHOUT TIME ZONE)

                    Oracle DB: WITH TIME ZONEでサポート。(9i以降)
                    SQL Server: datetimeoffsetでサポート(2008以降)
                    IBM Db2: なし(zOS用Db2ではバージョン10でサポート)
                    MySQL:timestampで対応。格納時に現在のタイムゾーンからUTCに、読み出しではUTCから現在のタイムゾーンに変換。(WITH TIMEZONEは未サポート)
                    PostgreSQL:WITH TIME ZONEでサポート。7.3より前のバージョンでは省略時のデフォルトがWITH TIME ZONEでしたが、7.3以降はSQL標準どおりになりました。
                    SQLite: なし。すべてUTCで扱う

                    日本はタイムゾーンが+09:00で全国統一されていますが、緯度的に国土が広い国では複数のタイムゾーンがあります。
                    (日本でも一時話題になったサマータイム(DST: Daylight Saving Time)設定がある国もあります)
                    また、分の単位での設定があるため、SQL標準でも分の単位が扱えるようになっています。

                    時間帯 (標準時)(Wikipedia)



                    [ここからはFirebirdに直接関係ない話です]
                    Webで見つけた以下の豆知識おもしろかったです。

                    タイムゾーンの豆知識3つ|Hinemosu

                    Oracleについての記事は山下さんのこちらの記事がわかりやすかったです。

                    日付データ演算の達人技を伝授する 【第3話】 (1/3)

                    Oracleでは本体のアップグレード時、それとあわせて、タイムゾーンのアップグレードも必要とのこと。

                    忘れずに!アップグレード後の作業

                    Oracle Database 12c へのアップグレード / 移行とデータベース統合(Part 1)

                    Db2ではタイムゾーン用のデータ型や知見は見つかりませんでしたが、日付時刻の扱いで、ここらへんの記事やブログエントリが読み物として面白かったです。

                    日付と時刻であそぶ(IBM Developerサイト)


                    標準SQL での日付・時刻の扱い方(i am BEST)


                    "一番ベンダー独自色の少ないデータベース"を例にとって日付・時刻の計算をシンプルに理解しよう(i am BEST)

                    JUGEMテーマ:コンピュータ



                    | meijik | Firebird/InterBase | 06:00 | comments(0) | trackbacks(0) | - | - |
                    "Firebird on the road from V4 to V5"(5) Firebird 4でのNUMERIC / DECIMALの改善
                    0
                      "Firebird on the road from V4 to V5"(5) Firebird 4でのNUMERIC / DECIMALの改善

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

                      "Firebird on the road from v4 to v5"はFirebirdの初日に行われた最初のセッションで、
                      Firebird Projectのドミトリィ・ヤマノフ(Dmitry Yemanov)により行われました。資料は以下のリンクから取得できます。

                      "Firebird on the road from v4 to v5"

                      本日は「Firebird 4.0 Preview」パートで、NUMERIC / DECIMAL の改善について説明します。

                      FirebirdのNUMERICとDECIMALは同じ実装で、精度が18桁しかありませんでした。

                      # もともとのNUMERICとDECIMALの違いについては以下をご参照ください。

                      What's the difference between NUMERIC and DECIMAL

                      Firebird 4.0で、精度が18から38に拡張されます。この拡張により、より大きな値が誤差なく扱える上に、他のデータベース(から|へ)の移行がスムーズになることが期待できます。

                      他のデータベースの実装状況は以下のとおりです。

                      Oracle DB: 38(NUMBER型が相当)
                      SQL Server: 38
                      IBM Db2: 31
                      MySQL:65
                      PostgreSQL:1000(内部実装は十数万)
                      SQLite: NUMERIC / DECIMALに相当するデータ型なし

                      JUGEMテーマ:コンピュータ

                      | meijik | Firebird/InterBase | 06:00 | comments(0) | trackbacks(0) | - | - |
                         1234
                      567891011
                      12131415161718
                      19202122232425
                      262728293031 
                      << January 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