フォーラム


ゲスト  

ようこそ ゲスト さん。このフォーラムに投稿するには 登録が必要です。

ページ: [1]
トピック: Firebird 64bit
SG
メンバー
投稿数: 107
Firebird 64bit
on: 2016/08/01 11:53 Mon

今現在、Firebird 1.5.6 を利用しております。
今後利用していくなら64bit版かなと思っておりますが
その恩恵がたいしたないのであれば(速度や安定度)
そのままFirebird1.5.6のままで行こうか迷っております。

それからFirebird1.5.6用に作成したUDFは64bit版でも動作するのでしょうか?

igy
メンバー
投稿数: 473
Re: Firebird 64bit
on: 2016/08/01 19:20 Mon

Firebird2.5
http://ht-deko.com/delphiforum/?vasthtmlaction=viewtopic&t=1546

で、書いたことの繰り返しになりますが、
1.5は、最終リリースが2009/10/8と古く、すでにEOLであり、それ以降、バグ修正等されない
のが、気がかりですね。

あと、速度や安定度に関しては、

45 Ways To Speed Up Firebird Database
https://ib-aid.com/en/articles/45-ways-to-speed-up-firebird-database/

も、参考になるかもしれません。

au
メンバー
投稿数: 16
Re: Firebird 64bit
on: 2016/08/02 09:02 Tue

64bit版には64bit版用のUDFが必要になります。

後、DBの文字コードがUTF8とかUNICODE_FSSなら特に問題無いと思いますが、1.5系でSJIS_0208を使っていて2.5系でもShiftJISを使おうと考えている場合は注意が必要です。
1.5系と2.5系では同じSJIS_0208でも使える文字が異なるようで、登録は出来てもLIKE等で検索するとエラーが出たりします。

DEKO
管理者
投稿数: 2691
Re: Firebird 64bit
on: 2016/08/02 14:21 Tue

あと、Firebird は 2.1 以降で文法が厳しくなっています。
曖昧な Select 文 (JOIN で結合されたテーブル) がエラーになる事があります。

SQL を修正せずにこの問題を回避するには firebird.conf をいじる必要があります。具体的には

RelaxedAliasChecking=1

 
を記述します。ですが…問題の先送りになるだけなので、この解決方法はオススメしません。

[RelaxedAliasChecking]
http://www.firebirdsql.org/file/documentation/release_notes/html/rnfb210-fbconf-relax.html

SG
メンバー
投稿数: 107
Re: Firebird 64bit
on: 2016/08/02 17:39 Tue

1.5系から2.5系に移行するにはいろいろ課題がありそうですが
1.5系SJIS_0208 を 2.5系にコンバートするにはどうすればいいですか?

DEKO
管理者
投稿数: 2691
Re: Firebird 64bit
on: 2016/08/02 18:09 Tue

引用 SG on 2016/08/02 17:39 Tue
1.5系から2.5系に移行するにはいろいろ課題がありそうですが
1.5系SJIS_0208 を 2.5系にコンバートするにはどうすればいいですか?

 
とりあえず、Firebird Converter を使ってみてはいかがでしょう?

[Firebird Converter]
https://github.com/tomneko/fbconverter

オプソで有償コンポーネントは一切使われていないので、お手軽に自分で好きなように改変できます。

SG
メンバー
投稿数: 107
Re: Firebird 64bit
on: 2016/08/04 10:10 Thu

[Firebird Converter]を使ってコンバートしてみました。(1.5 SJIS_0208->2.5 UTF8)
プロシージャのコンバートで関数に互換性ないのか途中でエラーになりデータそのものはコンバート
されませんでした。

au
メンバー
投稿数: 16
Re: Firebird 64bit
on: 2016/08/04 11:24 Thu

引用 SG on 2016/08/04 10:10 Thu
[Firebird Converter]を使ってコンバートしてみました。(1.5 SJIS_0208->2.5 UTF8)
プロシージャのコンバートで関数に互換性ないのか途中でエラーになりデータそのものはコンバート
されませんでした。

ストアドのコピーでエラーになるなら、とりあえずストアドを削除してコンバートしてみて、後からストアドだけ追加してみたらどうでしょう?

後、どういうストアドでエラーになったのかをgithubの方にissueで入れておいたら誰かが直してくれるかもしれません。

SG
メンバー
投稿数: 107
Re: Firebird 64bit
on: 2016/08/04 13:51 Thu

ストアドを削除したらコンバートできました。
ありがとうございます。

DEKO
管理者
投稿数: 2691
Re: Firebird 64bit
on: 2016/08/05 00:23 Fri

"Strict check" を外せばコンバートできたかもしれませんが、
その場合には先述の "RelaxedAliasChecking=1" を 移行先でやらなくてはいけません。

あと、BLOB にテキストを入れている場合はご注意ください。
Firebird は BLOB SubType TEXT にベタ文字列を格納しています…つまり、文字コード変換は行われません。
BLOB には "受信データ" のようなものも格納される事があるため、勝手に変換されては困る事があるのです。
(Interbase も同じ考え方だったような…)

…かといって、変換していい BLOB としてはいけない BLOB が判断付かないので、コンバータには BLOB を独自変換する機能はありません。

See Also:
[Metadata Text Conversion (Firebird.org)]
http://firebirdsql.org/rlsnotesh/rnfb210-intl-metafix.html

ページ: [1]
WP Forum Server by ForumPress | LucidCrew
バージョン: 1.7.5 ; ページロード: 0.053 sec.