SSブログ

Ubuntu 20.04 にソースからとインストーラーからインストール [Firebird]

Ubuntu 20.04 でパッケージで入れらるのは firebird3.0-server

最初にソースからのインストールを試みた

sudo apt update
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

これらのパッケージを入れれば
https://nakagami.blog.ss-blog.jp/2017-12-10 と同じように、
下のコマンドでソースからインストールできると思ったのだが、

git clone git@github.com:FirebirdSQL/firebird.git
cd firebird
./autogen.sh --prefix=/opt/firebird
make
sudo make install

sudo make install でエラー出る。そのうち調べる。

方針を変えて、インストーラでのインストールを試みる

ここ↓にあるインストーラーから Firebird 4.0 Beta1 を入れる。
https://firebirdsql.org/en/firebird-4-0-0-beta1/

wget http://web.firebirdsql.org/downloads/prerelease/v40beta1/Firebird-4.0.0.1436-Beta1.amd64.tar.gz
tar zxf Firebird-4.0.0.1436-Beta1.amd64.tar.gz
cd Firebird-4.0.0.1436-Beta1.amd64
sudo ./install.sh

・・・ただし、 http://tracker.firebirdsql.org/browse/CORE-5445 の、これ↓が必要だった
sudo ln -sf /usr/lib/x86_64-linux-gnu/libtommath.so.1 /usr/lib/x86_64-linux-gnu/libtommath.so.0


(追記)
ソースからのインストールについては
/etc/ld.so.conf に
/opt/firebird/lib

の1行を追加したらうまくいった

コメント(0) 
共通テーマ:日記・雑感

2019年のerlang/elixir Firebird データーベースドライバー [Firebird]

この記事は Firebird Advent Calendar 2019 https://qiita.com/advent-calendar/2019/firebird の 22日目の記事です

erlang の Firebird データーベースドライバーを書いていて、メンテナンスしています
https://github.com/nakagami/efirebirdsql
・・・とはいっても、最近何もしてないなあと思って、ログを調べると、今年前半にはリファクタリングしたり
Srp256 や decfloat 対応(どちらも Firebird4.0 のための機能) をしたりしてました。
開発バージョンの Firebird を使っている人でなければ関係ない部分の修正でした。

Elixir については、すべてを書く気力がなかったので、上記のerlang ドライバーの関数を呼ぶドライバーを書きました。
https://github.com/nakagami/firebirdex
これ、随分前に書いた記憶だったのですが、開発を開始したのが今年の2月だったようです。

最近、これらのコードは触ってなくて、ほかには erlang/elixir を書く機会がないのでだいぶ忘れてきました。
Firebird 関係なく、erlang/elixir を書く機会があると嬉しいなぁと思う今日この頃です。

コメント(0) 
共通テーマ:日記・雑感

2019年の Go言語の firebird データベースドライバー更新状況 [Firebird]

この記事は Firebird Advent Calendar 2019 https://qiita.com/advent-calendar/2019/firebird の 21日目の記事です

今年の firebirdsql https://github.com/nakagami/firebirdsql は、以下のような修正をしたようです。

1. begin/commit の対応がとれていない不具合の修正
2. Event https://nakagami.blog.ss-blog.jp/2016-12-09 のサポート
3. column_name_to_lower の実装( OR マッパー向け)
4. Firebird 4.0 の decfloat (精度の高い decimal型)のサポート

1. は https://github.com/nakagami/firebirdsql/pull/91
2. は https://github.com/nakagami/firebirdsql/pull/92
で Pull Request をもらったものです。
Pull Request もらうことなんてほとんどないので、大変うれしかったです。

コメント(0) 
共通テーマ:日記・雑感

JA 福岡市の LibreOffice ver6.0 Base マニュアル [Firebird]


この記事は Firebird Advent Calendar 2019 https://qiita.com/advent-calendar/2019/firebird の 15日目の記事です

JA 福岡市が公開している LibreOffice のマニュアルのできが良いらしいことは知っていたのですが、この10月に、埋め込み Firebird に対応したマニュアルが追加されました。やったー

この https://www.ja-fukuoka.or.jp/libre/ 中にある
- LibreOffice ver6.0 Base マニュアル(入門編)
- LibreOffice ver6.0 Base マニュアル(データ加工・事務処理編)
の2つが、埋め込み Firebird に対応したものです。
さらに、下のほうにある 「LibreOffice_Baseマニュアル」が HSQLDB 版で、それの Firebird に対応したもののようです。

(入門編)は、Base に限らず、リレーショナルデーターベースの基本的な説明がされていて Base ユーザーに限らず RDBMS 入門的な読み方のできる良い内容だと思います。
(それがFirebird を例に説明されているので、Firebird Advent Calendar 的には、なお良し)


(データ加工・事務処理編)は、Base の使い方(機能)説明なので、Base を使わない RDBMS 入門ユーザーに直接役に立つことはあまりありませんが、10.~14. は、SQL文を書く人にも役に立つと思います。

コメント(0) 
共通テーマ:日記・雑感

LibreOffice の Base と Firebird [Firebird]

この記事は Firebird Advent Calendar 2019 https://qiita.com/advent-calendar/2019/firebird と LibreOffice Advent Calendar 2019 の https://adventar.org/calendars/4230 の 14日目の記事です

昨年の Firebird Advent Calendar で Meiji さんが言及 http://blog.kimuradb.com/?eid=877556 してますが、LibreOffice 6.2 から Base の埋め込みデータベースとして Firebird が選択できるようになりました。
(そして、LibreOffice 6.3 からデフォルトで Firebird が選ばれているようになりました)
Firebird 3.0 の embeded サーバーが使われているようです

Base の odb ファイルは zip ファイル形式になっていて、埋め込みデーターベースに Firebird を選択した場合、その zip ファイルを解凍すると Firebird のバックアップファイルが取得できます。
basetable.png左のように LibreOffice からテーブルデータビューでデータを登録した odb ファイルから以下のような操作をしてみました
- odb ファイルをunzip
- gbak でリストア
- isql で接続して select

nakagami@ubuntu1804:~$ cd basefiles/
nakagami@ubuntu1804:~/basefiles$ unzip samplebase.odb
Archive:  samplebase.odb
 extracting: mimetype
   creating: reports/
  inflating: content.xml
  inflating: database/firebird.fbk
   creating: forms/
   creating: Configurations2/
  inflating: settings.xml
  inflating: META-INF/manifest.xml
nakagami@ubuntu1804:~/basefiles$ gbak -c -v -user SYSDBA -password masterkey database/firebird.fbk /tmp/firebird.fdb
gbak:opened file database/firebird.fbk
gbak:transportable backup -- data in XDR format
gbak:           backup file is compressed
gbak:backup version is 10
gbak:created database /tmp/firebird.fdb, page_size 8192 bytes
gbak:started transaction
gbak:restoring domain RDB$1
gbak:restoring domain RDB$2
gbak:committing metadata
gbak:restoring table table1
gbak:    restoring column id
gbak:    restoring column s
gbak:restoring generator RDB$1 value: 3
gbak:committing metadata
gbak:    restoring index RDB$PRIMARY1
gbak:restoring data for table table1
gbak:   3 records restored
gbak:    restoring privilege for user SYSDBA
gbak:    restoring privilege for user SYSDBA
gbak:    restoring privilege for user SYSDBA
gbak:    restoring privilege for user SYSDBA
gbak:    restoring privilege for user SYSDBA
gbak:    restoring privilege for user SYSDBA
gbak:    restoring privilege for user SYSDBA
gbak:    restoring privilege for user SYSDBA
gbak:creating indexes
gbak:committing metadata
gbak:    activating and creating deferred index RDB$PRIMARY1
gbak:adjusting views dbkey length
gbak:updating ownership of packages, procedures and tables
gbak:adding missing privileges
gbak:adjusting system generators
gbak:finishing, closing, and going home
gbak:adjusting the ONLINE and FORCED WRITES flags
nakagami@ubuntu1804:~/basefiles$ isql -user sysdba -password masterkey /tmp/firebird.fdb
Database: /tmp/firebird.fdb, User: SYSDBA
SQL> show tables;
table1

SQL> show table table1;
There is no table TABLE1 in this database
SQL> show table "table1";
id                              INTEGER Not Null Identity (by default)
s                               VARCHAR(100) Nullable
CONSTRAINT INTEG_1:
  Primary key (id)
SQL> select * from "table1";

          id s
============ ===============================================================================
           1 あいうえお
           2 かきくけこ
           3 さしすせそ

SQL>

日本語の文字列も問題なく select できました。
ただ LibreOffice で table1 と、小文字のテーブルを作成してしまったので、ダブルクォートでクォートする必要がありました。
コメント(0) 
共通テーマ:日記・雑感

2019年の pyfirebirdsql [Firebird]

この記事は Firebird Advent Calendar 2019 https://qiita.com/advent-calendar/2019/firebird の7日目の記事です

pure python で、私が書き起こしてメンテナンスしている Firebird のデーターベースドライバー pyfirebirdsql https://github.com/nakagami/pyfirebirdsql の2019年のリリースは振り返ってみると、結局一回だけでした。

内容も、
- ソースコードのちょっとした整理
- Firebird 4.0 beta1 で実装された decfloat の新しい内部形式に対応
程度で、 stable な Firebird3.0 や Firebird 2.5 には影響のないものでした。

FDB https://nakagami.blog.ss-blog.jp/2019-12-02 のように、スキーマやモニター情報を取得する機能をドライバーに含めるつもりはないので、機能的な追加は、もうしないと思います。

Firebird 4.0 の準備をしながら数年というような状況になってきました。
2020年こそ Firebird 4.0 がリリースされることを期待します。

コメント(0) 
共通テーマ:日記・雑感

Firebird を使うメリットって何だろう [Firebird]

これは、 Firebird Advent Calendar 2018 https://qiita.com/advent-calendar/2018/firebird の24日目の記事です。

MySQL や PostgreSQL じゃなくて Firebird を使うメリットって何だろう?
たまに質問されて、自分でも悩んでしまうが、これを機会に挙げてみると・・・

【メリット】

- インストールが簡単。 https://nakagami.blog.so-net.ne.jp/2018-12-02
- コンフィグレーションが簡単。 firebird.conf の修正だけ
- Windows のサポートがちゃんとしている
- (特に最近)SQL 標準の機能がサポートされてきている
- LibreOffice 6.2 の Base で使える http://blog.kimuradb.com/?eid=877556
- 開発が特定の企業に依存していない

【デメリット】

- 使っている人が少ない
- チューニングパラメーターが少ない(チューニングの余地が少ない)
- 可用性を高める機能がない。もしくはとても不足している
- 高負荷を分散するマルチマスターやシャーディングの機能がない
- 開発者とユーザーが少ない

ほとんどの場合困らないと信じているが、困ってしまったときに行き詰ってしまうかもしれないという怖さはある。
SQL文の機能的には問題ないが、僕ですら、積極的に人には勧められない。

僕が、Firebird プロジェクトにコミットしているのは、 せっかく Interbase が公開してくれて OSS として使える RDBMS が放置されて、選択肢が狭くなるのは勿体ない、ということからである。
できれば、僕も(Firebird にして良かったという場面で)仕事で使ってみたい。

HDD のような壊れやすいストレージに依存しなくなって、ストーレージが速くなって、今後、チューニングの必要のない小~中規模の環境で使うメリットが大きくならないかなぁ
・・・という願望はあるし、ワンチャンあるのでは、とは思っている。
コメント(0) 
共通テーマ:日記・雑感

pyfirebirdsql 1.1.2 released [Firebird]

これは、 Firebird Advent Calendar 2018 https://qiita.com/advent-calendar/2018/firebird の23日目の記事です。

Pure python な Firebird Database driver pyfirebirdsql 1.1.2 を(今さっき)リリースしました
https://pypi.org/project/firebirdsql/1.1.2/

主な変更点は 9日目に書いた timezone のサポートです
https://nakagami.blog.so-net.ne.jp/2018-12-11

次にリリースされるであろう Firebird 4.0 beta1 では使えると思います。
コメント(0) 
共通テーマ:日記・雑感

django の Firebird バックエンド [Firebird]

これは、 Firebird Advent Calendar 2018 https://qiita.com/advent-calendar/2018/firebird の20日目の記事です。

Python の Web フレームワーク Django は、デフォルトではFirebird をデーターベースバックエンドとして使えませんが、サードパーティーのデーターベースバックエンドを使用すると使えるようになります。
(フルサポートというわけにはいきませんが)

Django データーベースバックエンドについては DjangoCongress 2018 の資料を見てください
https://gist.github.com/nakagami/098db7387d78ab9c6aa85d77a0eeecf5

私が知る範囲で開発が継続されているのは2種類あります。

ひとつは django-firebird
https://pypi.org/project/django-firebird/
現在の最新は、 Django 1.11 に対応したバージョン 1.11 です。
データーベースドライバー fdb で Firebird 2.x 以上をサポートしています。
https://www.firebirdnews.org/django-firebird-1-11-final-release-available-on-pypi/

もう一つは、私が開発しているdjfirebirdsql
https://pypi.org/project/djfirebirdsql/
https://github.com/nakagami/djfirebirdsql

Django、 データーベースドライバー pyfirebirdsql、Firebird のいずれもリポジトリの最新のバージョンを対象にしています。
これは、かなり expreimental な状態なので、安定性という意味では全くオススメしません。

Firebird4.0 の機能を使っているので、 django-firebird と生成される SQL文が異なります
正直、 stable な状態になるかわかりませんが、 Django 2.2 + Firebird 4.0 で使えるバージョンをリリースできると良いな、と思っています。
コメント(0) 
共通テーマ:日記・雑感

Firebird 4.0 のまで残件 [Firebird]

これは、 Firebird Advent Calendar 2018 https://qiita.com/advent-calendar/2018/firebird の17日目の記事です。

2.0をリリースしてから3.0 をリリースするまで10年もかかってしまったことの反省から、
「4.0 以降は1~2年毎にリリースしようねー」
という話になっていたと思うのだが、Firebird3.0 がリリースされて2年半以上の時が過ぎている・・・

Firebird 4.0 の Planning Board を確認してみた。
https://www.firebirdsql.org/en/planning-board/

IN PROGRESS になっている残件は以下の通り。

Mandatory features
++++++++++++++++++++

- 論理レプリケーション CORE-2021
- 統計情報の最適化 CORE-1082, CORE-1686

Optional features
++++++++++++++++++++

- Window 関数の拡張 CORE-1688 (ほぼ実装。残件は CORE-5338 )
- Time Zone サポートCORE-694, CORE-909 (マージ済み? )

Firebird に論理レプリケーション求めているひとあんまいなさそうだし、
もう残りは次のリリース(5.0?)に延期して、とっとと Firebird 4.0 リリースしても
いいんじゃないかなぁ・・・と感じている今日この頃。

コメント(0) 
共通テーマ:日記・雑感