キムラデービーブログ

オープンソースデータベースを加速する「キムラデービー」のブログです。カレー日記を兼ねてます。なお著者は2010-06-01より日本オラクルに在籍していますが、本サイト(ブログ、またはウェブサイト)において示されている見解は、私自身の見解であって、オラクルの見解を必ずしも反映したものではありません。
Firebirdの分析関数の衝撃(10) 「2日前からの累計」
0
    本エントリはFirebird Advent Calendar 2018 の9日目です。

    Firebirdの分析関数の衝撃(10) 「2日前からの累計」

    4. 「2日前からの累計」

    テーブル定義とデータはそのまま使えます。
    PostgreSQL 8.4で利用できないクエリは、Firebird 3.0でも利用できません。これはrangeが未実装のためです。

    Window Functions

    それ以外のwindow関数利用のクエリ、未使用のクエリは動作します。
    ただし、一部Firebird独自の関数のdateadd()に変更する必要があります。
    datesub()はなく、第一引数をマイナスにすると引き算相当になります。

    -- window関数で書いたSQL。-interval '2 day'がないのでdateadd()関数に変更。
    select prc_date,prc_amt,
    prc_amt+
    case when Lag(prc_date,2) over(order by prc_date) >= dateadd(-2 day to prc_date)
    then Lag(prc_amt,2) over(order by prc_date) else 0 end +
    case when Lag(prc_date) over(order by prc_date) >= dateadd(-2 day to prc_date)
    then Lag(prc_amt) over(order by prc_date) else 0 end as mvg_sum
    from Accounts;

    -- 相関サブクエリで書いたSQL。-interval '2 day'がないのでdateadd()関数に変更
    select prc_date,prc_amt,
    (select sum(b.prc_amt)
    from Accounts b
    where b.prc_date between dateadd(-2 day to a.prc_date)
    and a.prc_date) as mvg_sum
    from Accounts a;

    PRC_DATE PRC_AMT MVG_SUM
    =========== ============ =====================
    2006-10-26 100 100
    2006-10-28 200 300
    2006-10-31 400 400
    2006-11-03 800 800
    2006-11-04 1600 2400
    2006-11-06 3200 4800
    2006-11-11 6400 6400

    JUGEMテーマ:コンピュータ



    | meijik | Firebird/InterBase | 00:09 | comments(0) | trackbacks(0) | - | - |
    Firebirdの分析関数の衝撃(9) 「最大何人まで座れますか?」
    0
      本エントリはFirebird Advent Calendar 2018 の八日目です。

      Firebirdの分析関数の衝撃(9) 「最大何人まで座れますか?」

      3. 「最大何人まで座れますか?」

      以下のDDL, DMLでSeats3テーブルを作成します。text型をドメインでVARCHARに定義済みの人はダウンロードできるソースそのまま(status text)でも大丈夫です。

      create table Seats3(
      seat integer primary key,
      status char(2));

      insert into Seats3 values( 1,'占');
      insert into Seats3 values( 2,'空');
      insert into Seats3 values( 3,'空');
      insert into Seats3 values( 4,'空');
      insert into Seats3 values( 5,'空');
      insert into Seats3 values( 6,'占');
      insert into Seats3 values( 7,'空');
      insert into Seats3 values( 8,'占');
      insert into Seats3 values( 9,'空');
      insert into Seats3 values(10,'空');

      commit;

      これをいったん定義すれば、ミックさんのビュー定義、クエリ。
      山岸さんのWindow関数版すべて動作します。

      START_SEAT END_SEAT SEAT_CNT
      ============ ============ =====================
      2 5 4

      JUGEMテーマ:コンピュータ



      | meijik | Firebird/InterBase | 00:06 | comments(0) | trackbacks(0) | - | - |
      Firebirdの分析関数の衝撃(8) 「3人なんですけど座れますか?」(行の折り返しを考慮する)
      0
        本エントリはFirebird Advent Calendar 2018 の七日目です。今年も参加者募集!

        Firebirdの分析関数の衝撃(8) 「3人なんですけど座れますか?」(行の折り返しを考慮する)

        2. 「3人なんですけど座れますか?」その2:行の折り返しも考慮する

        ミックさんの『SQLで数列を扱う』では、最初折り返しを考慮しない、つまり1席から15席までを連続した席として
        扱っていましたが、映画館やコンサートホールでは、一定の幅で折り返ししています。この場合数値としては連続していても列で分断される場合があり「折り返しを考慮する」とは、それを考慮したものになります。たとえば今回の場合は以下のようになり、結果として前回の結果から(9, 10, 11)を省いたものになります。

        A列: 1 2 3 4 5
        B列: 6 7 8 9 10
        C列:11 12 13 14 15

        クエリとしては:haed_cntに3を入れるのは前回と同じで、そのクエリに条件「OR S3.row_id <> S1.row_id」を追加したものになります。
        実行前にSeatsからSeats2を作っておきましょう。列名をいれるRow_ID列を追加作成し、その値'A','B','C'をseat番号を割り算してそれぞれのアスキーキャラクタを生成するascii_char関数で生成しています。

        create table Seats2(seat int,Row_ID char(2), status char(2));
        insert into Seats2 select seat,ascii_char(65+(seat-1)/5),status from Seats;
        commit;

        SELECT S1.seat AS start_seat, '〜' , S2.seat AS end_seat
        FROM Seats2 S1, Seats2 S2
        WHERE S2.seat = S1.seat + (3 -1) --始点と終点を決める
        AND NOT EXISTS
        (SELECT *
        FROM Seats2 S3
        WHERE S3.seat BETWEEN S1.seat AND S2.seat
        AND ( S3.status <> '空'
        OR S3.row_id <> S1.row_id));

        START_SEAT CONSTANT END_SEAT
        ============ ======== ============
        3 〜 5
        7 〜 9
        8 〜 10

        さて残念ながら、このページのwindow関数で書き換えたSQL1,2ともにFirebirdでは動作しません。これは「名前つきウインドウ(named windows)」がFirebird 3.0は未サポートのためです。(4.0にて実装予定)そのため「 window W1 as (partition by row_id order by seat)」のようにW1を扱うことができません。

        Window Functions

        window関数を使わないSQL1,2は動作します。

        ROW_ID START_SEAT END_SEAT
        ====== ============ =====================
        A 3 5
        B 7 9
        B 8 10

        JUGEMテーマ:コンピュータ



        | meijik | Firebird/InterBase | 08:47 | comments(0) | trackbacks(0) | - | - |
        Firebirdの分析関数の衝撃(7) 「3人なんですけど座れますか?」(行の折り返しを考慮しない)
        0
          本エントリはFirebird Advent Calendar 2018 の六日目です。今年も参加者募集!

          Firebirdの分析関数の衝撃(7) 「3人なんですけど座れますか?」(行の折り返しを考慮しない)

          1. 「3人なんですけど座れますか?」その1:行の折り返しを考慮しない


          まずミックさんの『SQLで数列を扱う』で提示されているSQL「人数分の空席を探す その1:行の折り返しを考慮しない」では、バインド変数(プレースホルダ) :head_cntが利用されています。Firebirdでも2.1以降でユーザコンテキスト変数があるので、それを使えばエミュレートできますが、ここは素直に即値の3を使います。(3以外の値を汎用的に利用したい場合はユーザコンテキスト変数を使ってください)

          SELECT S1.seat AS start_seat, '〜' , S2.seat AS end_seat
          FROM Seats S1, Seats S2
          WHERE S2.seat = S1.seat + (3 -1) --始点と終点を決める
          AND NOT EXISTS
          (SELECT *
          FROM Seats S3
          WHERE S3.seat BETWEEN S1.seat AND S2.seat
          AND S3.status <> '空' );

          次に言及だけされている「PostgreSQL8.4では文法エラー」のものは動きません。
          これは先に説明したフレーム句が未サポートのためです。

          テーブルとデータはダウンロードできる形式のものは使えないし、FirebirdではCREATE TABLE ... AS SELECT....
          が使えない
          ので、普通に作成します。

          create table Seats(seat int,status char(2));
          insert into Seats values(1,'占');
          insert into Seats values(2,'占');
          insert into Seats values(3,'空');
          insert into Seats values(4,'空');
          insert into Seats values(5,'空');
          insert into Seats values(6,'占');
          insert into Seats values(7,'空');
          insert into Seats values(8,'空');
          insert into Seats values(9,'空');
          insert into Seats values(10,'空');
          insert into Seats values(11,'空');
          insert into Seats values(12,'占');
          insert into Seats values(13,'占');
          insert into Seats values(14,'空');
          insert into Seats values(15,'空');

          これで確認すると、掲載されているWindow関数版、非Window関数版のクエリとも
          PostgreSQL 8.4レベルのものは全部実行できます。結果はこんな感じです。

          SEATSTART SEATEND
          ============ ============
          3 5
          7 9
          8 10
          9 11

          JUGEMテーマ:コンピュータ



          | meijik | Firebird/InterBase | 22:24 | comments(0) | trackbacks(0) | - | - |
          Firebirdの分析関数の衝撃(6) 移動累計
          0
            本エントリはFirebird Advent Calendar 2018 の四日目です。今年も参加者募集!

            5. 移動累計を求める
            まず「PostgreSQL8.4では文法エラー」のものは動きません。これは先に説明したフレーム句が未サポートのためです。

            Window Functions

            「window関数で書き換えたSQLその1」は動きます。「window関数で書き換えたSQLその2」は動きません。
            これはFirebird 3.0では名前つきのフレーム(Named Frame)が未サポートのためです。

            「window関数で書き換えたSQL3」はLagの第三引数のキャストをなくせば動作します。
            select prc_date,prc_amt,
            case when count(*) over(order by prc_date) >= 3
            then runSum - Lag(runSum,3,0) over(order by prc_date)
            end as mvg_sum
            from (select prc_date,prc_amt,
            sum(prc_amt) over(order by prc_date) as runSum
            from Accounts) a
            order by prc_date;

            「相関サブクエリを使うSQL1」は動作します。
            「相関サブクエリを使うSQL2」は、行の制限(Limited Fetch)にlimitではなく、SQL標準のFETCH FIRST n ROWS ONLYを使えば動作します。

            select prc_date,prc_amt,
            (select sum(c.prc_amt)
            from (select prc_amt
            from Accounts b
            where b.prc_date <= a.prc_date
            order by b.prc_date desc fetch first 3 rows only) c
            having count(*) = 3) as mvg_sum
            from Accounts a
            order by prc_date;

            JUGEMテーマ:コンピュータ



            | meijik | Firebird/InterBase | 00:04 | comments(0) | trackbacks(0) | - | - |
            Firebirdの分析関数の衝撃(5) 累計
            0
              本エントリはFirebird Advent Calendar 2018 の三日目です。今年も参加者募集!

              4. 累計を求める

              これは「window関数で書き換えたSQLその1」がうごきません。Firebird 3.0ではフレーム句が未サポートのため
              エラーになります。Firebird 4.0ではサポート予定です。

              Window Functions

              window関数で書き換えたSQLその2は動きます。
              山岸さんが書いてあるようにフレーム句を省略すると、デフォルトのRANGE UNBOUNDED PRECEDINGになります。
              これは、RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROWと同じ意味になるためです。

              JUGEMテーマ:コンピュータ



              | meijik | Firebird/InterBase | 00:03 | comments(0) | trackbacks(0) | - | - |
              Firebirdの分析関数の衝撃(4) Lag関数
              0
                本エントリはFirebird Advent Calendar 2018 の一日目です。今年も参加者募集中!

                今年もネタがなく、これまでに頓挫している山岸さんのエントリをもう少し量を少しずつにして完遂しようとたくらんでいます。

                PostgreSQLの分析関数の衝撃2(Lag関数と累計と移動累計)


                # 以前以下のエントリでも確認しましたが、このときは3.0.0, 今回は最新版の3.0.4での確認となります。

                Firebird 3.0 の Window関数(2)

                まず当該ページからソースがダウンロードできます。Windowsでダウンロードしたほうが日本語が化けないようです。
                FirebirdにはPostgreSQLのtext型がないため、これまではVARCHAR(20)で書き換えていましたが、よくよく考えると
                Firebirdにはドメインがあるので、以下のように宣言すれば、そのままDDLクエリが使えます。

                SQL> create domain text varchar(20);


                1. 部分的に不一致なキーの検索


                「PostgreSQL8.4では文法エラー」となる以下のクエリ。Firebirdではエラーにならないけど、結果がEmptyとなって不正orz バグ登録しなきゃ。(といったまま三年が経っている。。。。)

                select name,address
                from (select name,address,
                count(distinct address) over(partition by address)
                as distinctAddressCount
                from Addresses) a
                where distinctAddressCount > 1;

                配列型はない(あるけどSQLであつかえない)なので、array_agg(window関数で書き換えたSQL3,4)のクエリは動きません。

                2. 前年と年商が同じ年度を求める

                yearがFirebirdでは利用できないので、以前のエントリ同様"year"とするか、year2とかカラム名を変える必要があります。

                これは相関サブクエリ、Window関数版とも動作します。

                3. 累積差を求める

                これは自己結合、Window関数版ともに動作します。

                JUGEMテーマ:コンピュータ



                | meijik | Firebird/InterBase | 20:17 | comments(0) | trackbacks(0) | - | - |
                2018年のFirebird
                0
                  2018年のFirebird

                  本エントリはFirebird Advent Calendar 2017の25日目です。

                  さて、2018年のFirebird ! といえば、まずは次版のFirebird 4.0の話になります。

                  ....と書いてこれは去年のエントリと同じ! うーん。

                  話としては昨日naagamiさんの書いてくれた以下のとおりなのです。

                  Firebird4.0 Planning Board 2017 update(ある nakagami の日記)

                  今年はちょっと補足もないですが、以下の二つの事柄を。。。。

                  1.Firebird Tour 2017: Performance seminars
                  去年はカンファレンスが行われましたが、今年はFirebird Tourの2017年度版ということで行われました。
                  # 2012までは毎年カンファレンスが行われていましたが、それ以降は隔年になっています。

                  Firebird Tour 2017: Performance Optimization
                  Firebird Conference 2016
                  Firebird 2015 Tour: Big Databases
                  Firebird 2015 Spring Tour
                  Firebird Conference 2014
                  Firebird 2013 Tour
                  Firebird Conference 2012

                   以下のページからそれぞれ二つずつのプレゼンテーションが公開されていますので、チェックしてみてください。

                  Presentations from Firebird Tour 2017: Firebird Performance and Tuning Linux and Windows

                  Presentations from Firebird Tour 2017: Firebird 3 Statistics and Plans and Advanced Trace API

                   木村も最後に参加したのは2008年のイタリア開催なので、来年は久しぶりに参加してみたいですね。

                  2.2018のデータベースが進む道とFirebird
                   これまでのRDBMSはオンプレで、いかに性能をあげるか、HAを担保するのか、を競っていたように思えますが、
                  ここ数年、主戦場はオンプレからクラウドに移行してきているように感じます。そして「世の中の "マネージド" を名乗るサービスがやってくれること」が徐々に進化して、開発者がオンプレでちまちまやるよりも、そこに「丸投げ」したほうがいい(楽?)な部分が徐々に増えていると思います。と、思ったのは以下のエントリ。

                  最近MySQLをやめて別のRDBMSにしたときの話(MySQL Casual Advent Calendar 2017 12日目)

                  DBAをある程度極めた人が超絶技巧的にチューニングするのであれば、オンプレでエンタープライズ要素の高いRDBMSを使えばよいのですが、そこらへんは適当でよくて、各種運用をしたくない人には"マネージド"を名乗るサービスを使ったほうが幸せになれる気がします。

                   さて、Firebirdはどうでしょうか? Firebird自体はオンプレで超絶技巧的にチューニングするのには向いてないし、また"マネージド"のサービスに乗ったり、Amazon Auroraに使われているMySQLやPostgreSQLのように、先進的なエンジンを利用しやすくするフロントエンド的なI/Fとして使われることもなさそうです。

                  Amazon Auroraの先進性を誰も解説してくれないから解説する(武蔵野 Advent Calendar 2017 13日目)

                  使いどころはやはり手間のかからないオンプレ、と組み込みだと思うので、この観点でまた地道に活動していきたいと思います。十年前から変わってないですが、エバーグリーンということで。

                  適材適所のデータベース選択が重要--Firebird日本ユーザー会(ZDNet Japan)

                  では、またオープンソースRDBMSの世界で!

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

                  JUGEMテーマ:コンピュータ



                  | meijik | Firebird/InterBase | 05:23 | comments(0) | trackbacks(0) | - | - |
                  古いFirebirdとWindows 10 Fall Creators Update
                  0
                    本エントリはFirebird Advent Calendar 2017の23日目です。

                    ちょっと追いついていませんが、それはおいおい。。。

                    さて、首記の件ですが、ちょっと前にメーリングリストで話題になっていて、
                    IBPhoenixのドキュメントでもでました。現象は既存のものがアンインストールされ
                    再インストールできない、というものです。

                    Firebird-jp-general 2017年12月 保存書庫 スレッド

                    とりあえずはインストーラ名をSetup.exeに変更することで再度案ストールはできるそうです。

                    Firebird and Windows 10 Fall Creators Update(IBPhoenix)

                    ご参考まで。

                    JUGEMテーマ:コンピュータ



                    | meijik | Firebird/InterBase | 13:50 | comments(0) | trackbacks(0) | - | - |
                    FirebirdでFLOATを使(う|わない)理由
                    0
                      FirebirdでFLOATを使(う|わない)理由

                      本エントリはFirebird Advent Calendar 2017の22日目です。

                      私の本業(=家のローン払いに一番貢献している収入)はMySQLなので、最近以下のエントリを読んでモヤっとしてました。

                      MySQLで6桁までの小数点を丸めずに扱うならFLOAT型を使うべき理由(Qiita)

                      時間があったらコメントしないとなー、と思ってたら、すでに以下のエントリができてました。多謝。

                      MySQLのFLOAT型を使う理由が見つからない件(hnwの日記)

                      結論としてMySQLではFLOATがいろんなところで丸まっているので使うべきではないです。
                      ではFirebirdはどうか、ということで上記エントリのFirebird版を以下に記述します。

                      不思議な挙動(1)...は起こらない。INSERT時に0.9以外になる。

                      CREATE TABLE a (f FLOAT, d DOUBLE PRECISION);
                      INSERT INTO a VALUES(0.9,0.9);
                      SELECT * FROM a;

                      F D
                      ============== =======================
                      0.89999998 0.9000000000000000

                      不思議な挙動(2)...も起こらない。f=0.9でもSELECT可能

                      SELECT * FROM a WHERE f=0.9;

                      F D
                      ============== =======================
                      0.89999998 0.9000000000000000

                      SELECT * FROM a WHERE d=0.9;

                      F D
                      ============== =======================
                      0.89999998 0.9000000000000000

                      不思議な挙動(3)...も起こらない。見た数字(INSERTしてSELECTした結果)のとおりの動作です。

                      CREATE TABLE b (f1 FLOAT, f2 FLOAT);
                      INSERT INTO b VALUES(0.9,0.8999996); -- 8と6の間に9が五個
                      INSERT INTO b VALUES(0.9,0.89999996); -- 8と6の間に9が六個

                      SELECT * FROM b;

                      F1 F2
                      ============== ==============
                      0.89999998 0.89999962
                      0.89999998 0.89999998

                      SELECT * FROM b WHERE f1=f2;

                      F1 F2
                      ============== ==============
                      0.89999998 0.89999998

                      結果Firebirdでは不思議な挙動はおきないのですが、おきないから、といって積極的に利用をすすめるか、
                      といわれると私の答えは"No"ですね。上記ブログのまとめにもありますし、以前私が書いたブログエントリにも記述しましたが、FLOAT型を採用するメリットはサイズが小さいことだけなので、大量に使う場合(==カラムとして複数定義かつ行数が多い場合)の領域削減、時のみ検討すべきで、普通小数を含む場合: 誤差OKならDOUBLE, 誤差NGならNUMERICにすべきです。

                      Firebirdで他のRDBMSから来た人に奇妙に見える振る舞いは、計算時の小数点以下の有効範囲の取り扱いでしょうか。
                      以下のブログと、そこから参照しているブログ(英語)で、その振る舞いの一端がわかります。

                      Firebird のお勉強 計算時の小数点以下の有効範囲(布団が俺を呼んでいる)

                      P.S. Firebirdはdoubleではだめでdouble precisionと書かないとエラーです。。。。

                      create table c(d double); -- NG
                      Statement failed, SQLSTATE = 42000
                      Dynamic SQL Error
                      -SQL error code = -104
                      -Token unknown - line 1, column 24
                      -)
                      create table c(d double precision); -- OK

                      JUGEMテーマ:コンピュータ



                      | meijik | Firebird/InterBase | 23:24 | comments(0) | trackbacks(0) | - | - |
                           12
                      3456789
                      10111213141516
                      17181920212223
                      24252627282930
                      31      
                      << March 2019 >>
                      + 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
                      • 毎月日経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)
                      • Windows上でのMySQLビルド方法
                        kinoyasu (03/31)
                      • 気軽に新しいMySQLを試してみる: MySQL Sandboxのススメ
                        MeijiK (09/19)
                      + RECENT TRACKBACK
                      + CATEGORIES
                      + ARCHIVES
                      + MOBILE
                      qrcode
                      + LINKS
                      + PROFILE