The Scalable Relational Database Server

以下に、一般的な、Foundation/JavaオブジェクトをFrontBaseデータ・タイプにマップするときの推奨パターンを簡単に説明する。FrontBaseで提供されるデータ・タイプについて関心がある場合は、“The Datatypes of FrontBase”というタイトルの資料を参照すること。

NSString
java.lang.String
java.io.Reader
(for CLOB)
可能なデータタイプ: CHARACTER, VARCHAR, CLOB
推奨:

VARCHAR

コメント:

もし、とても長いストリングを扱い、そのストリング・キャラクタ上で検索する予定がほとんどないのであれば、CLOBデータタイプにするのがいい選択だろう。CLOBデータタイプの主な長所は、データベースに、ストリングを分けて送信する点にある。これにより、データベースは巨大なSQLステートメントの構文解析やコピーから開放され、かわりにデータを効果的にバイナリ・チャンネルへ転送することができるようになる。

VARCHARは、一般的に、CHARACTERよりもお勧めである。VARCHARのインプリメンテーションは、とても効果的で、区別が必要なストリングの再利用を許可しているからである。パフォーマンスを犠牲にしなくても、たとえば、 VARCHAR(1000000)といった具合に、VARCHARの定義を行うことで、“必要に応じて変更可能な" VARCHARの定義を使うことができる。

キャラクタ・ストリングの内部表示は、クライアント側で行われるエンコード・デコードにはUTF8が用いられる。すなわち、NSString/java.lang.Stringネイティブな手法で処理される。


NSNumber
java.lang.Number
可能なデータタイプ: BOOLEAN, SMALLINT, INTEGER, FLOAT, REAL, DOUBLE PRECISION
推奨: INTEGER あるいは DOUBLE PRECISION (実際の用途に依存する)
コメント: NSNumber/Numberは、C/Javaの数値データタイプをカバーするもので、FrontBaseタイプでは、実際の用途によってどちらかを選ぶことになる。

NSDecimalNumber
java.math.BigDecimal
可能なデータタイプ: NUMERIC, DECIMAL, REAL, FLOAT, DOUBLE PRECISION
推奨: DOUBLE PRECISION, DECIMAL
コメント: 正確な計算を期すため、NSDecimalNumberを使っている場合、DOUBLE PRECISION(あるいは整数値の場合はDECIMAL)を直接マップすること。必要なディスクスペースを減らしたいなら、かわりにFLOAT/NUMERICを用いることもできる(1行、1つの値あたり。8バイト節約することができる)。

NSCalendarDate
java.sql.Date
java.sql.Timestamp)
可能なデータタイプ: DATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE
推奨: TIMESTAMP
コメント: TIMESTAMP WITH TIME ZONEは、NSCalendarDateで与えられるデータと直接的に同等なものである。異なるタイムゾーンに属するデータを扱う必要がなかったり、常にクライアント側タイムゾーンを使って時刻表示したい場合は、TIMESTAMPだけを扱えばよい。

java.sql.Time 可能なデータタイプ: TIME, TIME WITH TIME ZONE
推奨:

どちらでもよい

コメント: java.sql.Timeは、java.sql.Dateを単に(あるいは驚くほど情報を削減して)包括的に扱うものである。

NSData
java.io.InputStream
可能なデータタイプ: BLOB
推奨: BLOB

Primary key 可能なデータタイプ: INTEGER, BYTE(12)
推奨: どちらでもよい.
コメント:

BYTE(12)は、BIT(96)をカバーするもので、このデータタイプはEOFによって作られるプライマリ・キーの生成に使われるべきものである(クライアント側の計算機能による)。

FrontBaseのデータタイプはどれも、プライマリ・キーに対して使われ、そのために、すべての数値データタイプは、実際の数値として表現される。これは、たとえば、プライマリ・キー列に対するデータタイプとして、DOUBLE PRECISIONや、TIMESTAMP を使っても安全だということだ。しかしながら、EOFについては、プライマリ・キー列としての指定には適さないデータタイプがある(DOUBLE PRECISION、BLOB、そしてCLOBである) 。したがって、もしEOFを使うなら、この点をよく検討する必要がある。

FrontBaseは、マルチ・コラムあるいは複合的プライマリ・キー(compound primary keys)をサポートしている。ただし、EOFで、複合キーを使う場合は、かなり注意を払う必要がある。


(c)Copyright 1999-2006 A10 all right reserved.