So-net無料ブログ作成

PostgreSQL や Firebird で自動採番された主キーの値を INSERT 時に知る [RDBMS]

・SQLite3 で id INTEGER PRIMARY KEY
・MySQLで id AUTO_INCRIMENT PRIMARY KEY
としておくと、cursor.execute() の後の cursor.lastrowid で、id の値が取ってこれる(Python的に)。
http://www.randynetwork.com/blog/46
それは知ってた。

んでもって、PostgreSQL(psycopg2) でも lastrowid って、とってこれるんだけど、それって oid で、主キーの値でないんだよねぇ、と思っていたら、PostgreSQL 8.2 から INSERT文 にRETURNING 句というのを付けると好きな値を取ってこれるらしい。
http://lists.initd.org/pipermail/psycopg/2008-July/006112.html

そして、Firebird でも 2.0 から使えるようになっていて、しかも FAQ。
http://www.firebirdfaq.org/faq243/
ちょっと試してみたところ、 kinterbasdb でも値が取得できる。

うーん、知らんかった。

ちなみに、Firebird 2.0 以降では、トリガーを使わなくてもシーケンス番号を設定することができるようになったので、これと組み合わせればシーケンス番号の追加のためだけのトリガーを作成しなくてもよくなる。
http://nakagami.blog.so-net.ne.jp/2006-04-01

Fusion IO アーリーアダプター(というかチャレンジャー?) [RDBMS]

いつもながら、Firebird News 経由
http://www.firebirdnews.org/?p=3381

http://sourceforge.net/mailarchive/message.php?msg_name=C3A0571DD64C48CC9A102817399D1C2D%40Tabulex.local

4 processor Opteron 850/16G Ultra320 15krpm 8 disk RAID の環境から
Quad Core の 2 CPU FusionIO の ioDrive 80G のうち 40 G を使う環境に変えたら
時間のかかるクエリで 8 秒だったのが 4 秒になったよ

・・・ってチャレンジャーだなぁ。
FusionIO
http://kakaku.com/pc/ssd/ma_2410/
ioDrive 80G
http://kakaku.com/item/K0000046111/

Firebird と PostgreSQL のどっちがいいの? [RDBMS]

StackOverFlow の質問
http://stackoverflow.com/questions/1331946/what-do-you-guys-think-of-postgres-and-firebird-databases

Windows 2003 .NET Framework 3.5 で Firebird と PostgreSQL でどっちがいい?という質問
バイアスのかかった回答を排除すると

・.NET Framework のドライバなら Firebird のがいい
・PHP とか Python なら PostgreSQL のドライバの方がいい
確かに、PHP の Firebird のドライバはかなりダメダメという話は聞いたことがある。
Python のドライバ(psycopg2)は開発体制がかなり手厚い。

ここまで、サーバーについての明確なこっちのがいいという回答なし。
性能的には、だいたい似たようなものではないかと思う。
Firebird は、バックアップ&レストアを定期的にやらないとデータがどんどんでっかくなっちゃうけど、 PostgreSQL だと(vacuum すれば)そんなことない、ということを言ってる人はいる。
Windows なら Firebird の方が歴史が長いという意見もあるが、現在の PostgreSQL の Windows 版が不安定だという意見は出てない。

StackOverFlow のデータベースは SQLServer だそうだが、
http://www.publickey.jp/blog/09/stackoverflowcom4pc.html
これくらいの規模で Firebird 使ってくれるひといないかな。

Firebird がどれぐらい流行ってるか調べた [RDBMS]

Google Trends で(MySQL にはとてもかなわないので)PostgreSQL と Firebird について比較してみた(12ヶ月)。世界中だと・・・
pg_fb_world.PNG
おー、よしよし、頑張ってるな。
日本は、PostgreSQL のが強いから日本で限定すると多少は負けるかな・・・
pg_fb_japan.PNG
0.03・・・普通の人は Firebird って知らないんだ。

Ubuntu 9.04 で kinterbasdb3.3 をソースからビルド [RDBMS]

http://nakagami.blog.so-net.ne.jp/2009-05-09 のときに、 KInterbasDB 3.2 をパッケージからインストールしてソースを修正したが、 3.3.0 をソースからインストールしている人をたまたま発見したのでメモっておく
http://mapopa.blogspot.com/2009/02/firebird-python-howto-on-ubuntu-wget.html

$ sudo apt-get install python-dev firebird2.1-dev
をすれば kinterbasdb をソースからインストールできる、ということ。

Firebird の DB に接続しているユーザーを知る [RDBMS]

http://forums.devshed.com/firebird-sql-development-61/query---find-count-of-active-connections-191785.html
http://groups.yahoo.co.jp/group/Firebird-jp-general/message/2133?threaded=1&expand=1
いつか使うかどうかわからんけど、たまたま発見したのでメモ。
ちなみに、 isc_database_info() で ODS の major/minor バージョンを知ることもできる。

RDBで階層構造を扱う [RDBMS]

http://labs.unoh.net/2009/06/rdb.html
参考になる。しかしジョジョは知らないのでサザエさんで解説して欲しい

Firebird 使用事例とセマフォ数の調整 [RDBMS]

Firebird News http://www.firebirdnews.org/?p=3028 経由
http://sourceforge.net/mailarchive/message.php?msg_name=4A424646.2090904%40gmx.net
使用事例は、あまり聞けないのでメモっておく(以下超訳)


Linux kernel 2.4 + Firebird 2.0.x から、サーバー入れ替えに伴い Linux kernel 2.6 + Firebird 2.1.2 に入れ替えた。
昔、 高負荷の環境で Kenel 2.6 + Firebird だと多くのトラブルに見舞われたので、 Kernel 2.4 のままにしてたんだけど・・・(平均して 75~150 コネクションが張られててピーク時に 300 以上になる。データベースサイズは 20G 越え。7つの異なるアプリケーション PHP/Java/Win32 native から使われ、10~30 分かかる長いトランザクション処理もあり)今回はすこぶる調子いい。

変更したのは、firebird.conf の LockSemCount のデフォルト 250 を 1024 に変えたとこくらい。デフォルトのままだと "Fatal lock manager error: semop failed (acquire), errno: 22" と出ちゃう。


投稿では、Super Server か Classic Server か書いてないけど内容からして Classic Server ですな。Kernel パラメータのセマフォ設定については書いてないけど、↓ここらに書いてある。
http://pmakowski.ibphoenix.fr/post/2009/03/05/From-the-support-list
win32 native の意味がよくわからんけど、ODBC ドライバのことかな?

そういえば、セマフォ不足については以前僕も FreeBSD 環境で悩んだことがあった。
高負荷ってわけじゃなく、 PostgreSQL を同時に立ち上げてたのと、初期状態のセマフォ数が少なすぎるのが原因。
http://nakagami.blog.so-net.ne.jp/2006-09-13

Firebird のバックアップ(ssh 経由とか) [RDBMS]

http://levosgien.net/2009/06/17/tunnelling-a-firebird-backup-with-ssh/

$ gbak -b [-v] XXX.XXX.XXX.XXX:database backup.fbk -user SYSDBA -password masterkey
これで、リモートのデーターベースのバックアップをローカルに取れる

$ gbak -b [-v] -service XXX.XXX.XXX.XXX:service_mgr database /path/to/backup.fbk -user SYSDBA -password masterkey
リモートのデータベースのバックアップを別のリモートのマシンにとれる(らしい)

$ ssh -C -f user@XXX.XXX.XXX.XXX -L 3052:localhost:3050 -N
でトンネルを作って
$ gbak -b [-v] localhost/3052:database backup.fbk -user SYSDBA password masterkey
で ssh でバックアップができる(のか?)

$ gbak -c [-v] backup.fbk database -user SYSDBA -password masterkey
でリストア。1.0 とオプションが変わってる。そのうち直したい↓なぁ。
http://www005.upp.so-net.ne.jp/nakagami/Memo/Firebird.html

Django の Firebird backend (20090606 version) [RDBMS]

Once, I wrote Django firebird backend
http://nakagami.blog.so-net.ne.jp/2009-03-12-2

But it is not good work on Django subverion trunk today. (Target is moving !)
So I catch it up. ( Thanks Maxi )
http://www005.upp.so-net.ne.jp/nakagami/Download/django-firebird_20090606.zip

I hope it works on Django 1.1 release.

Django の Firebird バックエンドを以前書いたんだけど、Django の trunk コードで動かなくなってたよ。えーん。
仕方がないので、現在の trunk で動くようにしてみた。 1.1 release でも動くといいな。