Firebird5.0 released [Firebird]
1/11 にリリースされていた
https://firebirdsql.org/en/news/firebird-5-0-0-is-released/
4.0 のリリースから1年半くらい
https://nakagami.blog.ss-blog.jp/2021-06-01
もう大きな機能UPは望んでなくて、むしろ複雑になり過ぎないこと望む。
途絶えずにリリースが続いていることはとても嬉しい。
https://firebirdsql.org/en/news/firebird-5-0-0-is-released/
4.0 のリリースから1年半くらい
https://nakagami.blog.ss-blog.jp/2021-06-01
もう大きな機能UPは望んでなくて、むしろ複雑になり過ぎないこと望む。
途絶えずにリリースが続いていることはとても嬉しい。
Ubuntu22.04 に Firebird をソースからインストール [Firebird]
https://nakagami.blog.ss-blog.jp/2020-04-24 の Ubuntu22.04 版
How to build Firebird server on Ubuntu22.04
create firebird user
-------------------------------------------
(and something settings ?)
sudo apt install firebird3.0-server
sudo apt remove firebird3.0*
install packages
---------------------------------
sudo apt install -y libtommath1 libtommath-dev libtomcrypt-dev libncurses5 libncurses5-dev zlib1g-dev libicu-dev libreadline-dev
sudo apt install -y unzip autoconf cmake libtool g++ btyacc
clone & build & install
------------------------------------
git clone git@github.com:FirebirdSQL/firebird.git
cd firebird
./autogen.sh --prefix=/opt/firebird
make
sudo make install
How to build Firebird server on Ubuntu22.04
create firebird user
-------------------------------------------
(and something settings ?)
sudo apt install firebird3.0-server
sudo apt remove firebird3.0*
install packages
---------------------------------
sudo apt install -y libtommath1 libtommath-dev libtomcrypt-dev libncurses5 libncurses5-dev zlib1g-dev libicu-dev libreadline-dev
sudo apt install -y unzip autoconf cmake libtool g++ btyacc
clone & build & install
------------------------------------
git clone git@github.com:FirebirdSQL/firebird.git
cd firebird
./autogen.sh --prefix=/opt/firebird
make
sudo make install
Firebird の Rust ドライバー [Firebird]
これは、Firebird Advent Calendar 2021 https://qiita.com/advent-calendar/2021/firebird の 23日目の記事です
Firebird の Rust ドライバーといえば、 rsfbclient があります
- https://crates.io/crates/rsfbclient
- https://github.com/fernandobatels/rsfbclient
・・・が、私も、習作として Rust のドライバーを書きました
- https://crates.io/crates/firebirust
- https://github.com/nakagami/firebirust
昨年のうちにワイヤープロトコルの部分はできていたのですが、
rsfbclient がリリースされて、挫折しそうになっていました。
自分の Rust の習作としても、ワイヤープロトコルのサンプル実装としても、完成させた方がよかろうということで、
その後、開発を再開させ、なんとか今年になって完成させることができました。
一言で感想をいえば「Rust 難しい」です。
まだ、自分の中で消化しきれてない状態で Rust を書いて、ここ数ヶ月は書いてないので、もう Rust 忘れそうです。
Python の PEP-249 や、go の database/sql や、Julia の DBInterface.jl のような決まったインターフェースは
ないっぽいので、これでいいのかどうか確信が持ててません。
「〇〇のデーターベースドライバーでは、こういうことができるので firebirust でもできるようにしたほうがいいのではないか」
というリクエストがあったら Issue に書いて欲しいと思いっています。
Firebird の Rust ドライバーといえば、 rsfbclient があります
- https://crates.io/crates/rsfbclient
- https://github.com/fernandobatels/rsfbclient
・・・が、私も、習作として Rust のドライバーを書きました
- https://crates.io/crates/firebirust
- https://github.com/nakagami/firebirust
昨年のうちにワイヤープロトコルの部分はできていたのですが、
rsfbclient がリリースされて、挫折しそうになっていました。
自分の Rust の習作としても、ワイヤープロトコルのサンプル実装としても、完成させた方がよかろうということで、
その後、開発を再開させ、なんとか今年になって完成させることができました。
一言で感想をいえば「Rust 難しい」です。
まだ、自分の中で消化しきれてない状態で Rust を書いて、ここ数ヶ月は書いてないので、もう Rust 忘れそうです。
Python の PEP-249 や、go の database/sql や、Julia の DBInterface.jl のような決まったインターフェースは
ないっぽいので、これでいいのかどうか確信が持ててません。
「〇〇のデーターベースドライバーでは、こういうことができるので firebirust でもできるようにしたほうがいいのではないか」
というリクエストがあったら Issue に書いて欲しいと思いっています。
Firebird の Julia データーベースドライバー [Firebird]
これは、
Firebird Advent Calendar 2021 https://qiita.com/advent-calendar/2021/firebird
と
Julia Advent Calendar 2021 https://qiita.com/advent-calendar/2021/julia
の16日目の記事です
今まで、色々なプログラミング言語で Firebird のドライバーを書いてきました。
調べてみると、ここら辺に Julia の各種ドライバーがあって(Firebird のはなくて)
https://github.com/JuliaDatabases
DBInterface.jl のインターフェースを定義すればよいということがわかってきました。
https://github.com/JuliaDatabases/DBInterface.jl
さらに
https://nakagami.blog.ss-blog.jp/2021-12-03
Julia を書いてみた感じ、今まで書いてきたドライバーのソースコードを参考にすれば Julia でも書けそうということになりました。
・・・というわけで Firebird のドライバー書きました。
https://juliahub.com/ui/Packages/Firebird/pPw8v/0.2.2
LibreOffice Base 7.2 の Firebird サポート [Firebird]
これは Firebird Advent Calendar 2021 https://qiita.com/advent-calendar/2021/firebird の9日目の記事です
LibreOffice Base の Firebird サポートについて書いたのは2年前の Firebird Advent Calendar 2019 で、その時は LibreOffice 6.3 でした
https://nakagami.blog.ss-blog.jp/2019-12-14
今回、 最新の LibreOffice 7.2 をインストールして Base のファイルを作成しようとした時に
- Create a new database の Embedded database で Firebird が選べなくなっていた(HSQLDB Embedded だけになっていた)
- Firebird のデーターベースファイルを読み書きしたい場合は、Connect to an existing database でデータベースファイルを選択する
- Connnect to an existing database で、Firebird File を指定。ホストとパスを指定(リモートのデータベースサーバーを指定)することも可能
というように変わっていました。
Base のファイルの中に Firebird のデーターベースファイルが埋め込まれているのは、いささか無理矢理感あるなと思っていました。
ですので、個人的には、これでいいと思うのですが、LibreOffice 6.x の時と動作が変わってしまっていて、なかなか思い切った変更がなされるな、と驚いているところです。
ちなみに、Firebird4.0 のファイルを指定したら、 ODS のバージョンが違うと怒られました。
Firebird4.0 が読めるクライアントライブラリをリンクするようにしたら Firebird3.0 のファイルが読めなくなるかな?
Ubuntu の Firebird が、いまだに 3.0 なんだけど、これが LibreOffice との兼ね合いでバージョンが上げられない、という事情だったら、いつ 4.0になるかわからないな。
LibreOffice Base の Firebird サポートについて書いたのは2年前の Firebird Advent Calendar 2019 で、その時は LibreOffice 6.3 でした
https://nakagami.blog.ss-blog.jp/2019-12-14
今回、 最新の LibreOffice 7.2 をインストールして Base のファイルを作成しようとした時に
- Create a new database の Embedded database で Firebird が選べなくなっていた(HSQLDB Embedded だけになっていた)
- Firebird のデーターベースファイルを読み書きしたい場合は、Connect to an existing database でデータベースファイルを選択する
- Connnect to an existing database で、Firebird File を指定。ホストとパスを指定(リモートのデータベースサーバーを指定)することも可能
というように変わっていました。
Base のファイルの中に Firebird のデーターベースファイルが埋め込まれているのは、いささか無理矢理感あるなと思っていました。
ですので、個人的には、これでいいと思うのですが、LibreOffice 6.x の時と動作が変わってしまっていて、なかなか思い切った変更がなされるな、と驚いているところです。
ちなみに、Firebird4.0 のファイルを指定したら、 ODS のバージョンが違うと怒られました。
Firebird4.0 が読めるクライアントライブラリをリンクするようにしたら Firebird3.0 のファイルが読めなくなるかな?
Ubuntu の Firebird が、いまだに 3.0 なんだけど、これが LibreOffice との兼ね合いでバージョンが上げられない、という事情だったら、いつ 4.0になるかわからないな。
Firebird4.0 の ChaCha20 [Firebird]
これは、Firebird Advent Calendar 2021 https://qiita.com/advent-calendar/2021/firebird
の2日目の記事です
Firebird3.0 で、サーバーとクライアントのやりとりを RC4 で暗号化する仕組みができました。
Firebird4.0 で RC4 に加えて、ChaCha20 による暗号化が可能になりました。
ドライバーが対応していれば、ネゴシエーションでChaCha20 で通信することが決められますが、
対応していないドライバーであれば、 RC4 (もしくは、暗号化なし)でデータのやりとりがなされます。
今年は、自分が書いてメンテナンスしているドライバーで、この ChaCha20 のサポートをしました。
ChaCha20 が、 TLS1.3 で使われるようになった比較的新しい暗号アルゴリズムだということは知っていて、
なんとなく難しそう・・・と思っていたのですが
ブロック暗号ではなく(ブロック暗号だとブロックのあまり部分の扱いとか難しそう)ストリーム暗号ならなんとかなるかなってことで調べ始めました。
https://en.wikipedia.org/wiki/Salsa20#ChaCha_variant
https://ja.wikipedia.org/wiki/Salsa20
64バイトの内部状態(16バイトの固定値、32バイトの秘密鍵、12バイトの nonce、4バイトのカウンター)をグルグルかき混ぜて、
その内部状態と xor をとって暗号化/復号するもので、わかってみると、自分でも実装できるようなものでした。
pure python の python ドライバー pyfirebirdsql では、 ChaCha20 部分を自分で書きました
https://github.com/nakagami/pyfirebirdsql/blob/master/firebirdsql/chacha20.py
Go言語、 erlang のドライバーは、標準ライブラリに ChaCha20 のエンコード、デコードをする機能があったのでそれを使いました
- https://github.com/nakagami/firebirdsql
- https://github.com/nakagami/efirebirdsql
専門家でないので、 ChaCha20 でどれくらい暗号強度が増したのかわからないのですが、
(十分な長さのパスワードであれば、インターネット上を通信パケットを流しても十分安全なのか?)
Firebird の新しいWireProtocol に追随できて嬉しいです。
の2日目の記事です
Firebird3.0 で、サーバーとクライアントのやりとりを RC4 で暗号化する仕組みができました。
Firebird4.0 で RC4 に加えて、ChaCha20 による暗号化が可能になりました。
ドライバーが対応していれば、ネゴシエーションでChaCha20 で通信することが決められますが、
対応していないドライバーであれば、 RC4 (もしくは、暗号化なし)でデータのやりとりがなされます。
今年は、自分が書いてメンテナンスしているドライバーで、この ChaCha20 のサポートをしました。
ChaCha20 が、 TLS1.3 で使われるようになった比較的新しい暗号アルゴリズムだということは知っていて、
なんとなく難しそう・・・と思っていたのですが
ブロック暗号ではなく(ブロック暗号だとブロックのあまり部分の扱いとか難しそう)ストリーム暗号ならなんとかなるかなってことで調べ始めました。
https://en.wikipedia.org/wiki/Salsa20#ChaCha_variant
https://ja.wikipedia.org/wiki/Salsa20
64バイトの内部状態(16バイトの固定値、32バイトの秘密鍵、12バイトの nonce、4バイトのカウンター)をグルグルかき混ぜて、
その内部状態と xor をとって暗号化/復号するもので、わかってみると、自分でも実装できるようなものでした。
pure python の python ドライバー pyfirebirdsql では、 ChaCha20 部分を自分で書きました
https://github.com/nakagami/pyfirebirdsql/blob/master/firebirdsql/chacha20.py
Go言語、 erlang のドライバーは、標準ライブラリに ChaCha20 のエンコード、デコードをする機能があったのでそれを使いました
- https://github.com/nakagami/firebirdsql
- https://github.com/nakagami/efirebirdsql
専門家でないので、 ChaCha20 でどれくらい暗号強度が増したのかわからないのですが、
(十分な長さのパスワードであれば、インターネット上を通信パケットを流しても十分安全なのか?)
Firebird の新しいWireProtocol に追随できて嬉しいです。
Firebird 4.0 released [Firebird]
遂に Firebird 4.0 がリリースされた。
無事 Release Note のこのあたりに↓名前を刻むことができた。
https://firebirdsql.org/file/documentation/release_notes/html/en/4_0/rlsnotes40.html#rnfb40-dml-windows-newfunctions
嬉しい。
Firebird 3.0 の最初のリリースは、 2016年4月だったらしい
https://firebirdsql.org/en/news/firebird-3-0-is-released/
この時に、「5年も待つことはないだろう(と思いたい)」と書いたが、 https://nakagami.blog.ss-blog.jp/2016-04-19 5年待つことになってしまった。
Firebird 5.0 がリリースされるの、いつだろうなぁ。
無事 Release Note のこのあたりに↓名前を刻むことができた。
https://firebirdsql.org/file/documentation/release_notes/html/en/4_0/rlsnotes40.html#rnfb40-dml-windows-newfunctions
嬉しい。
Firebird 3.0 の最初のリリースは、 2016年4月だったらしい
https://firebirdsql.org/en/news/firebird-3-0-is-released/
この時に、「5年も待つことはないだろう(と思いたい)」と書いたが、 https://nakagami.blog.ss-blog.jp/2016-04-19 5年待つことになってしまった。
Firebird 5.0 がリリースされるの、いつだろうなぁ。
Firebird 4.0 RC1 released [Firebird]
毎年の Firebird Advent Calendar で
「今年も 4.0 RC1 は出ませんでした」
が風物詩になっていたが、ついに出た。
https://firebirdsql.org/en/news/firebird-4-0-release-candidate-1-is-available-for-testing/
https://www.firebirdnews.org/firebird-4-rc1/
Firebird 3.0 が最初にリリースされたのいつだっけ?と思って調べたら2016年4月だった
https://firebirdsql.org/en/news/firebird-3-0-is-released/
希望を言えば、今年中に Firebird 4.0 がリリースされて、 Ubuntu 22.04 に Firebird4.0 のパッケージが含まれると嬉しいが、難しいと思っている。
とにかくリリースできてよかった(ファイナルリリースは、計画も含めて、時期はまだ未定だけど)
OSS の RDBMS といえば、 MySQL (と MariaDB)と PostgreSQL が有名だが、選択肢は多いほうがいい。
Firebird3.0 の当初の計画で実装される予定だったレプリケーションのなど機能が 4.0 で実装されているはずで、もう10年くらいかかっていると思う。
RC1 以降は、サーバーとクライアントでやりとりするワイヤープロトコルの変更はないと思うので、データーベースドライバの 4.0 対応のゴールが見えた。
後でリリースノートを読む。
「今年も 4.0 RC1 は出ませんでした」
が風物詩になっていたが、ついに出た。
https://firebirdsql.org/en/news/firebird-4-0-release-candidate-1-is-available-for-testing/
https://www.firebirdnews.org/firebird-4-rc1/
Firebird 3.0 が最初にリリースされたのいつだっけ?と思って調べたら2016年4月だった
https://firebirdsql.org/en/news/firebird-3-0-is-released/
希望を言えば、今年中に Firebird 4.0 がリリースされて、 Ubuntu 22.04 に Firebird4.0 のパッケージが含まれると嬉しいが、難しいと思っている。
とにかくリリースできてよかった(ファイナルリリースは、計画も含めて、時期はまだ未定だけど)
OSS の RDBMS といえば、 MySQL (と MariaDB)と PostgreSQL が有名だが、選択肢は多いほうがいい。
Firebird3.0 の当初の計画で実装される予定だったレプリケーションのなど機能が 4.0 で実装されているはずで、もう10年くらいかかっていると思う。
RC1 以降は、サーバーとクライアントでやりとりするワイヤープロトコルの変更はないと思うので、データーベースドライバの 4.0 対応のゴールが見えた。
後でリリースノートを読む。
Products.FirebirdDA 0.7.0 [Firebird]
これは、Firebird Advent Calendar 2020 の20日目の記事です
https://qiita.com/advent-calendar/2020/firebird
今年は Zope 向け Firebird Database Adapter である Products.FirebirdDA を6年半振りにリリースしました。
- https://nakagami.blog.ss-blog.jp/2020-06-20
- https://pypi.org/project/Products.FirebirdDA/
Zope がバージョン4になって Python3 対応が必要になったためです。
Zope 5 でも動くと思います。
Zope4/Zope5 で動かなかったら、リポジトリ https://github.com/nakagami/Products.FirebirdDA で Issue を作成してください。
Firebird の Object (テーブル、カラムなど)の情報を表示していた Browser タブは、Firebird のバージョンが上がるにつれ不完全になってしまっていて、メンテナンスする余裕がないので、削除してしまいました。
必要があれば、Browser タブの代わりに Framerobin などを使ってください。
https://qiita.com/advent-calendar/2020/firebird
今年は Zope 向け Firebird Database Adapter である Products.FirebirdDA を6年半振りにリリースしました。
- https://nakagami.blog.ss-blog.jp/2020-06-20
- https://pypi.org/project/Products.FirebirdDA/
Zope がバージョン4になって Python3 対応が必要になったためです。
Zope 5 でも動くと思います。
Zope4/Zope5 で動かなかったら、リポジトリ https://github.com/nakagami/Products.FirebirdDA で Issue を作成してください。
Firebird の Object (テーブル、カラムなど)の情報を表示していた Browser タブは、Firebird のバージョンが上がるにつれ不完全になってしまっていて、メンテナンスする余裕がないので、削除してしまいました。
必要があれば、Browser タブの代わりに Framerobin などを使ってください。
DB-Engines Ranking の Firebird [Firebird]
これは、Firebird Advent Calendar 2020 の13日目の記事です
https://qiita.com/advent-calendar/2020/firebird
DB-Engines Ranking というページがありまして
https://db-engines.com/en/ranking
機械的にデーターベースサーバーのスコアを出してランキングしているものです。
毎月、月初にスコアとランキングが更新されるのですが、私は数年間、月が変わるタイミングでこのページの Firebird のスコアとランキングを見て一喜一憂しています。
2〜3年前までは順位を落とし続け 32位までランキングを下げた時期もあったのですが、その後一進一退を続け、今月は29位(久々の 30位以内)でした。
日本ではほとんど無名ですが、健闘してるんではないでしょうか?
ランキングは他のデーターベースサーバーの人気次第なので一喜一憂しても仕方ない面も多々あります。
私は、ランキングよりもスコアをより気にしているんですが、こちらは、現在 22.833 で 2015年の過去最高記録の 23.424 に、あと少しというところまで来てます。
https://db-engines.com/en/ranking_trend/system/Firebird
https://qiita.com/advent-calendar/2020/firebird
DB-Engines Ranking というページがありまして
https://db-engines.com/en/ranking
機械的にデーターベースサーバーのスコアを出してランキングしているものです。
毎月、月初にスコアとランキングが更新されるのですが、私は数年間、月が変わるタイミングでこのページの Firebird のスコアとランキングを見て一喜一憂しています。
2〜3年前までは順位を落とし続け 32位までランキングを下げた時期もあったのですが、その後一進一退を続け、今月は29位(久々の 30位以内)でした。
日本ではほとんど無名ですが、健闘してるんではないでしょうか?
ランキングは他のデーターベースサーバーの人気次第なので一喜一憂しても仕方ない面も多々あります。
私は、ランキングよりもスコアをより気にしているんですが、こちらは、現在 22.833 で 2015年の過去最高記録の 23.424 に、あと少しというところまで来てます。
https://db-engines.com/en/ranking_trend/system/Firebird