キムラデービーブログ

オープンソースデータベースを加速する「キムラデービー」のブログです。カレー日記を兼ねてます。なお著者は2010-06-01より日本オラクルに在籍していますが、本サイト(ブログ、またはウェブサイト)において示されている見解は、私自身の見解であって、オラクルの見解を必ずしも反映したものではありません。
PostgreSQLでカジュアルに再帰クエリ実行with共通表式(CTE:Common Table Expression)
0
    本エントリはPostgreSQL Advent Calendar 2017の10日目です。

    PostgreSQLでカジュアルに再帰クエリ実行with共通表式(CTE:Common Table Expression)

    PostgreSQLでは8.4から再帰クエリ(WITH RECURSIVE)に対応しています。

    1.基本編(WITH RECURSIVE ... SELECT)
    ここ十年くらい使っている以下のサンプルで試してみます。

    階層構造を隣接リストで表現(slideshare)

    なぜ十年くらい使っているかというと、Firebirdでは丁度そのころ2.1でCTE実装したからです。

    Firebird 2.1の新機能(3) 共通表式(CTE: Common Table Expression), 再帰問い合わせ(キムラデービーブログ)

    CREATE TABLE shain(empid INT PRIMARY KEY, name VARCHAR(20), mgrid INTEGER);
    INSERT INTO shain VALUES ( 1, 'みやはら', NULL);
    INSERT INTO shain VALUES ( 2, 'きむら', 1);
    INSERT INTO shain VALUES ( 3, 'かまたき', 1);
    INSERT INTO shain VALUES ( 4, '加藤', 2);
    INSERT INTO shain VALUES ( 5, '林', 2);
    INSERT INTO shain VALUES ( 6, '三浦', 5);

    WITH RECURSIVE n AS
    (
    SELECT empid, name FROM shain WHERE name = 'きむら'
    UNION ALL
    SELECT nnext.empid, nnext.name FROM shain as nnext, n WHERE n.empid= nnext.mgrid
    )
    SELECT * FROM n;

    empid | name
    -------+--------
    2 | きむら
    4 | 加藤
    5 | 林
    6 | 三浦
    (4 rows)

    無事出力できました。環境は以下のブログ記事を参考に、真ん中あたりをざっくりとばして、各種文字を9.x -> 10に変更して、PostgreSQL 10.1 on CentOS 7.4にて確認しました。

    CentOS7にPostgreSQLを導入&初期設定をおこなう (vdeep)


    2.応用編(WITH RECURSIVE ... (UPDATE|DELETE))
    SQL標準ではSELECTだけですが、PostgreSQLは9.1から更新も可能になっています。
    Microsoft SQL Serverは2005から, MySQL 8.0も対応予定です。

    きむらの部下、林さんと林さんの部下を、かまたきさんの部下にすげかえましょう!
    ....ってあれ、これは再帰クエリは不要ですね。。。。

    UPDATE shain SET mgrid = (SELECT empid FROM shain WHERE name='かまたき') WHERE name = '林';

    気をとりなおして。。。

    例えば、表にタイムスタンプ列を追加して、

    postgres=# alter table shain add column ts timestamp default current_timestamp;

    指定した階層以下の人を更新する、とかに使えます。

    WITH RECURSIVE n AS
    (
    SELECT empid, name FROM shain WHERE name = 'かまたき'
    UNION ALL
    SELECT nnext.empid, nnext.name FROM shain as nnext, n WHERE n.empid= nnext.mgrid
    )
    UPDATE shain SET ts = CURRENT_TIMESTAMP WHERE empid IN (SELECT empid FROM n);

    もしくは

    WITH RECURSIVE n AS
    (
    SELECT empid, name FROM shain WHERE name = 'かまたき'
    UNION ALL
    SELECT nnext.empid, nnext.name FROM shain as nnext, n WHERE n.empid= nnext.mgrid
    )
    UPDATE shain AS t SET ts = CURRENT_TIMESTAMP FROM n WHERE t.empid = n.empid;

    postgres=# select * from shain;
    empid | name | mgrid | ts
    -------+----------+-------+----------------------------
    1 | みやはら | | 2017-12-10 01:26:50.533647
    2 | きむら | 1 | 2017-12-10 01:26:50.533647
    4 | 加藤 | 2 | 2017-12-10 01:26:50.533647
    3 | かまたき | 1 | 2017-12-10 07:30:56.803044
    5 | 林 | 3 | 2017-12-10 07:30:56.803044
    6 | 三浦 | 5 | 2017-12-10 07:30:56.803044
    (6 rows)

    当然これらをDELETEに適用すると、指定した階層以下の人を削除することができます。

    WITH RECURSIVE n AS
    (
    SELECT empid, name FROM shain WHERE name = 'かまたき'
    UNION ALL
    SELECT nnext.empid, nnext.name FROM shain as nnext, n WHERE n.empid= nnext.mgrid
    )
    DELETE FROM shain WHERE empid IN (SELECT empid FROM n);

    postgres=# select * from shain;
    empid | name | mgrid | ts
    -------+----------+-------+----------------------------
    1 | みやはら | | 2017-12-10 01:26:50.533647
    2 | きむら | 1 | 2017-12-10 01:26:50.533647
    4 | 加藤 | 2 | 2017-12-10 01:26:50.533647
    (3 rows)

    PostgreSQLはWITH RECURSIVE ... INSERTも対応していますが、それはまた別の機会に。

    明日はcuzicさんです。

    JUGEMテーマ:コンピュータ



    | meijik | PostgreSQL | 07:48 | comments(0) | trackbacks(0) | - | - |
    PostgreSQL9.6以降同期レプリケーションは名前どおりのモード(synchronous_commit=remote_apply)あり!@PGECons勉強会 #1
    0
      OSSDBの世界を漂う木村明治です。

      PostgreSQLエンタープライズ・コンソーシアム(PGECons)が初めての勉強会をする、というので参加してきました!

      PGECons勉強会 #1明日から使えるPostgreSQLレプリケーション

      短時間でいろいろな知見が得られてThanksモニカ、というところですが、
      特に以前以下のブログでdisり気味にとりあげたものを本エントリでアップデートします。

      PostgreSQL9.1の同期レプリケーションはMySQL5.5でいうところの準同期レプリケーション相当ですよ(キムラデービーブログ)

      以下の図は上記勉強会の資料からの引用(p.37)です。(資料自体は上記connpassから辿れます)



      PostgreSQL 9.6以降、synchronous_commitにremote_applyが設定できるようになり、
      これは、まさにユーザが「同期レプリケーション」と聞いて想像するものと一致するようになりました。この図の(1)-(5)までで、MySQLに相当するものは大まかにいうと、

      (1) マスターでsync_binlog=0
      (2) マスターでsync_binlog=1
      (3) 該当なし
      (4) 準同期レプリケーション
      (5) 該当なし

      気になるのはパフォーマンスですけど、とりあえずPGEConで検証した結果は資料を見てみてください!!

      JUGEMテーマ:コンピュータ

      | meijik | PostgreSQL | 23:42 | comments(0) | trackbacks(0) | - | - |
      使い慣れたSQLに潜む実装依存(PostgreSQLの場合)とSQL標準の参照方法
      0
        使い慣れたSQLに潜む実装依存(PostgreSQLの場合)とSQL標準の参照方法

        本ブログエントリはPostgreSQL Advent Calendar 2016の20日目です。

        Firebirdの場合、はこの記事をはじめとしてAdvent Calendarで11回にわたり解説したので、PostgreSQLについては
        それをコンパクトに一回でまとめます :)

        PostgreSQLの場合、他のRDBMSやSQL標準と比較して違った動作は以下のところです。

        (1) GREATEST(1,2,NULL)で、NULLではなく2を返す
        (2) CURRENT_TIMESTAMPで、ステートメントの開始時刻(==現在時刻)ではなく、トランザクション開始時刻を返す
        (3) SELLECT NULL || 'ABC'はNULLを返すのに(SQL標準ぽい動作), SELECT CONCAT(NULL, 'ABC')は'ABCを返す(Oracleぽい動作)
        (4) UPDATE文による主キー値の入れ替えで、エラー(SQL標準っぽくない動作), DEFERRABLE指定で回避できる。

        (2) について、ステートメントの開始時刻を得るにはstatement_timestamp()、関数が評価された時間を得るには
        clock_timestamp()を利用します(OracleやMySQLでいうところのsysdate)。
        transaction_timestamp()とnow()はPostgreSQLのcurrent_timestamp, つまりトランザクション開始時の日付時刻の別名です。

        PostgreSQLはかなりSQL標準を意識したつくりになっているので、上記のように違和感を感じる動作は少ないです。

        さて、他のRDBMSとの比較、は比較的簡単にできますが、SQL標準はこれまで参照するのはなかなか難しい状態でした。基本的に規格書は有料で、ひとつのパートについて数万円くらいしたからです。(私は以前Club DB2でストアドやトリガーの話をするために規格書の一部分を購入しましたが、値段がそのくらいしました)

        現状ではISOをベースとしたJISの規格書(X3005, X3006)がオンラインの閲覧は無料でできるようになっているので、ぜひ参照してみてください。ただ私の環境ではWindowsでIEを使って閲覧しないとうまく閲覧できませんでした。
        以下は「日本工業標準調査会ウェブサイト」へのリンクです。

        JISX3005-1
        JISX3005-2
        JISX3005-13
        JISX3005-14
        JISX3006-1

        これらのなりたちと原規格書との対応・相違は以下のpdfに詳しいです。

        データベース言語(SQL)に関するJIS原案作成委員会 成果報告書

        JUGEMテーマ:コンピュータ



        | meijik | PostgreSQL | 23:18 | comments(0) | trackbacks(0) | - | - |
        あなたのPostgreSQLが返す乱数は、開いているか、閉じているか。
        0
          以前、次のようなエントリを作成しました。

          あなたのDBが返す乱数は、開いているか、閉じているか。

          このとき(2009年) PostgreSQLについては、以下のように記述したんですが。。。

          o [0,1] つまり0から1の値を返す
          →Firebird, PostgreSQL, IBM DB2

          最新のPostgreSQLをみると[0,1)になってる!!

          日本語マニュアルでは8.4から[0,1)になっているみたいですが、ソースコード(¥src¥backend¥utils¥adt¥float.c)を追っかけていくとどうやら8.2.0から[0,1)になっているみたいです。

          # 8.1.26まで
          /* result 0.0-1.0 */
          result = ((double) random()) / ((double) MAX_RANDOM_VALUE);

          # 8.2.0から
          /* result [0.0 - 1.0) */
          result = (double) random() / ((double) MAX_RANDOM_VALUE + 1);

          んで、英語マニュアルをみるとしれっと8.2からそうなってますね。。。

          ちゅうことで、PostgreSQL 8.1までは[0,1], 8.2以降は[0,1)ということで w (元記事もそのうち更新します)
          しかし日曜日のあけがたから何をやってるんだ。。。オレ

          JUGEMテーマ:コンピュータ


          | meijik | PostgreSQL | 05:30 | comments(0) | trackbacks(0) | - | - |
          秘密エキス
          0
            DSC_0839.JPG
            数年前に「次でてみますよ」といっていたPostgreSQLのしくみ分科会、やっとでれました。

            第23回しくみ+アプリケーション 勉強会(2012年5月26日)

            内容はPacemaker, PHPでのSQLインジェクション対策, PostgreSQL9.2新機能と盛りだくさんでした。
            以下のリンクをご参照ください♪

            LINUX-HA JAPAN


            PHPでのSQLインジェクション対策 - エスケープ・クォート編


            PHPでのSQLインジェクション対策 - プレースホルダ編

            PostgreSQL 9.2 Beta 1公開、性能向上とJSONサポートなど

            懇親会はやすいうえに、飲み放題の日本酒が半端なくいい、またいきたいっすね。
            | meijik | PostgreSQL | 22:33 | comments(0) | trackbacks(0) | - | - |
            PostgreSQLの次期版9.1の機能紹介
            0
              JUGEMテーマ:コンピュータ


              といっても、他人の便乗エントリなのですが(笑)板垣さんThanks!

              PostgreSQL 9.1 の新機能(Let's postgres)

              まぁいろいろありますが、SQL文の拡張部分を重点的に。

              文字列関数 concat()が追加されます。複数引数を指定できるのはMySQL風なのですが、なぜかNULLは
              空文字として扱われますので、||とは違う感じになってしまいます。通常引数のうちにNULLが混じれば
              結果はNULLになるのが常。以下はPostgreSQL 9.0の実行結果。

              postgres=# select 'ABC' || NULL || 123;
              ?column?
              ----------

              (1 行)

              Oracleの仕様(VARCHAR2で''とNULLは同一視)にあわせたのでしょうかね? PostgreSQLの人は混乱しないんでしょうか?
              MySQLでは当然NULLになってしまうので、これを防ぐにはIFNULLかCOALESCEを使います。

              mysql> SELECT concat('ABC', NULL, 123);
              +--------------------------+
              | concat('ABC', NULL, 123) |
              +--------------------------+
              | NULL |
              +--------------------------+
              1 row in set (0.02 sec)

              mysql> SELECT concat('ABC', IFNULL(NULL,''), 123);
              +-------------------------------------+
              | concat('ABC', IFNULL(NULL,''), 123) |
              +-------------------------------------+
              | ABC123 |
              +-------------------------------------+
              1 row in set (0.07 sec)

              mysql> SELECT concat('ABC', COALESCE(NULL,''), 123);
              +---------------------------------------+
              | concat('ABC', COALESCE(NULL,''), 123) |
              +---------------------------------------+
              | ABC123 |
              +---------------------------------------+
              1 row in set (0.04 sec)

              「GROUP BY が MySQL 風に緩めに」とか「CREATE TABLE IF NOT EXISTSのサポート」は明らかにMySQLへの歩み寄りですね。まぁ便利ですから(^_^;)

              ちなみにMERGEは本バージョンでもまだサポートの話がでませんね。。。。SQL標準への準拠度が高いPostgreSQLとしては珍しい。。。。
              | meijik | PostgreSQL | 05:00 | comments(0) | trackbacks(0) | - | - |
              PostgreSQLのパーティショニング、利点と制限(欠点)
              0
                [医療] 先進事例紹介セミナー
                〜 MySQLで大量データを高速処理: 在庫管理の効率化と大幅なTCO削減を実現 〜


                昨日は久しぶりに公の場でお話をさせていただきました。メディカルデータビジョン殿、スマートスタイル殿、いろいろと貴重なお話ありがとうございました。

                今回セミナー終了後に、いろいろな問い合わせを受けたのですが、その中の一つに「MySQLではパーティショニングでSELECT ... FOR UPDATEを使えますか」というものがありました。当然使えるわけですが、なぜそのようなことを聞かれるのかと理由を尋ねると、PostgreSQLではできないとのこと。探してみると以下のような記事を見つけました。

                パーティショニング : 用途と利点(Let's postgres 板垣さん)

                [2010-03-15 追記]
                8.4では親テーブルへのSELECT FOR UPDATEが可能になったとのことです。(Thanks ゆーすけさん)

                元々PostgreSQLでのパーティショニングは、専用の機能を実装したというよりは、テーブルの継承(もともと(というか今も)ORDBMSなのです)とCHECK句など、既存の機能をうまく利用して実装しています。そのため、利点とともに制限(欠点も)多く存在します。

                詳細は上記の板垣さんの記事をご参照ください。

                とはいえ、用途が合致すれば便利ですし、少しずつ改善もされつつあります。現在の最新安定版でもパーティショニングに関わる機能が改善されています。詳細は、次の板垣さんの記事をご参照ください。

                PostgreSQL 8.4 の新機能(Let's postgres 板垣さん)
                | meijik | PostgreSQL | 07:35 | comments(1) | trackbacks(0) | - | - |
                PostgreSQL Conference 2009 Japan にちょっと参加してきました。
                0


                  直前まで、いろいろごたごたしていたため、前売り券は買ってなかったのですが、当日少し元気がでたので、首記のカンファレンスにいってきました。

                  PostgreSQL Conference 2009 Japan - JPUG 10th Anniversary Conference -

                  カンファレンスに来るのは二年ぶり?くらいです。金曜日・土曜日の2daysで、しかも今年はJPUG 10周年ということで、外タレも多々参加の今回のカンファレンスです。金曜日がビジネストラックということで夜に懇親会もあったのですが、都合ででられず、土曜日のコミュニティトラックに参加しました。

                  PostgreSQLのXML関連のセッションパフォチュー(ほとんど笠原さんw)、そして今回の目当ての山岸さんのセッションを受けて、体力の限界? でおいとましました。石川さんをはじめ、久しぶりにあうPosgreSQL界の方々に挨拶しつつ、次回OSCでお世話になる清末さんの元気な姿も確認できました。

                  技術的なところは、おいおい消化したいと思います。皆様お疲れ様でした!

                  ところでWindows版PostgreSQLの64-bit版はでてなかったんですね....でもきっと8.5には登場することでしょう。。。。

                  [2015-02-24 追記] Windows 64-bit版は、8.5改め、9.0にてリリースされました。
                  PostgreSQL 9.0 に関する技術情報(SRA)

                  | meijik | PostgreSQL | 14:53 | comments(0) | trackbacks(0) | - | - |
                  NTTがPostgreSQLベースのEnterpriseDBと提携
                  0
                    NTTがPostgreSQLベースのEnterpriseDBと提携,社内利用で30億円コスト削減見込む(ITpro)

                    「Oracle互換」を明確にしている分、ビジネスはしやすいはずで、後はパートナー次第だと思っていたので、この発表は追い風になりますねー。オープンソースビジネスの一つの成功例となるようにがんばってもらいたいです>>EnterpriseDB

                    | meijik | PostgreSQL | 03:49 | comments(0) | trackbacks(0) | - | - |
                    JPUGセミナー@九州「大規模運用可能なフリーDBの現状」
                    0
                      JPUGセミナー@九州「大規模運用可能なフリーDBの現状」

                      JPUGのセミナーなのですが、以下のセッションで梶山さんと共に講師(?) をやる予定です。

                      ■第3部■
                      講師 サン・マイクロシステムズ株式会社 MySQLビジネス統括本部  梶山 隆輔氏
                      演題 『SunのPostgreSQL,MySQLへの取り組み』
                      [講演概要]
                      サン・マイクロシステムズ株式会社として、オープンソースに関する取り組みをお話頂きます。
                      企業が、どのようにオープンソースに関っていくのか、ひとつの方向性をお話いたします。

                      PostgreSQL派の方々にも、MySQLを知ってもらう良い機会だとおもいますので、
                      ご近所の方でご興味のある方は是非とも足を運んでみてください。
                      | meijik | PostgreSQL | 23:09 | comments(1) | trackbacks(0) | - | - |
                        12345
                      6789101112
                      13141516171819
                      20212223242526
                      2728293031  
                      << May 2018 >>
                      + 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
                      • 使い慣れた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)
                      • 伝わらない曲シリーズ: 川島恵「ミスター不思議」
                        96 (07/05)
                      • 気軽に新しいMySQLを試してみる: MySQL Sandboxのススメ
                        MeijiK (02/17)
                      + RECENT TRACKBACK
                      + CATEGORIES
                      + ARCHIVES
                      + MOBILE
                      qrcode
                      + LINKS
                      + PROFILE