关系型数据库对应的设计
立即下载
资源介绍:
关系型数据库对应的设计
@advanced_1000_h1
進歩したトピックス
@advanced_1001_a
Result Sets
@advanced_1002_a
大きなオブジェクト
@advanced_1003_a
リンクテーブル
@advanced_1004_a
トランザクション分離
@advanced_1005_a
#Multi-Version Concurrency Control (MVCC)
@advanced_1006_a
クラスタリング / 高可用性
@advanced_1007_a
2フェーズコミット
@advanced_1008_a
互換性
@advanced_1009_a
#Standards Compliance
@advanced_1010_a
Windowsサービスとして実行する
@advanced_1011_a
ODBCドライバ
@advanced_1012_a
#Using H2 in Microsoft .NET
@advanced_1013_a
ACID
@advanced_1014_a
永続性問題
@advanced_1015_a
リカバーツールを使用する
@advanced_1016_a
ファイルロックプロトコル
@advanced_1017_a
SQLインジェクションに対する防御
@advanced_1018_a
#Restricting Class Loading and Usage
@advanced_1019_a
セキュリティプロトコル
@advanced_1020_a
汎用一意識別子 (UUID)
@advanced_1021_a
システムプロパティから読み込まれた設定
@advanced_1022_a
#Setting the Server Bind Address
@advanced_1023_a
#Limitations
@advanced_1024_a
用語集とリンク
@advanced_1025_h2
Result Sets
@advanced_1026_h3
行数の制限
@advanced_1027_p
アプリケーションから結果が返される前に、全ての行はデータベースによって読み取られます。 サーバー側のカーソルは現在サポートされていません。もし最初の数行がアプリケーションに読み取られたら、 result setサイズはパフォーマンスを改善するために制限されます。これは、クエリーの LIMIT を使用することで 実現できます (例: SELECT * FROM TEST LIMIT 100)、または Statement.setMaxRows(max) を使用します。
@advanced_1028_h3
大きなResult Set と外部ソート
@advanced_1029_p
#For large result set, the result is buffered to disk. The threshold can be defined using the statement SET MAX_MEMORY_ROWS. If ORDER BY is used, the sorting is done using an external sort algorithm. In this case, each block of rows is sorted using quick sort, then written to disk; when reading the data, the blocks are merged together.
@advanced_1030_h2
大きなオブジェクト
@advanced_1031_h3
大きなオブジェクトのソートと読み込み
@advanced_1032_p
メモリに収まらないオブジェクトは可能であるなら、 データ型は CLOB (テキストデータ) または BLOB (バイナリーデータ) が使用されるべきです。 これらのデータ型に関して、オブジェクトはストリームを使用して、完全にメモリから読み込まれるというわけではありません。 BLOB を保存するためには、PreparedStatement.setBinaryStream を使用します。 CLOB を使用するためには、PreparedStatement.setCharacterStream を使用します。 BLOB を読み込みためには、ResultSet.getBinaryStream を使用し、CLOB を読み込むために ResultSet.getCharacterStream を使用します。もし クライアント / サーバーモードが使用されていたら、 BLOB と CLOB データはアクセス時に完全にメモリから読み込まれます。このケースでは、メモリによって BLOB と CLOB のサイズは制限されています。
@advanced_1033_h2
リンクテーブル
@advanced_1034_p
このデータベースはリンクテーブルをサポートしています。これは、 現在存在しないテーブルは、ただ他のデータベースへリンクするという意味です。 このようなリンクを作るには、CREATE LINKED TABLE ステートメントを使用します:
@advanced_1035_p
#It is then possible to access the table in the usual way. Whenever the linked table is accessed, the database issues specific queries over JDBC. Using the example above, if you issue the query SELECT * FROM LINK WHERE ID=1
, then the following query is run against the PostgreSQL database: SELECT * FROM TEST WHERE ID=?
. The same happens for insert and update statements. Only simple statements are executed against the target database, that means no joins. Prepared statements are used where possible.
@advanced_1036_p
#To view the statements that are executed against the target table, set the trace level to 3.
@advanced_1037_p
#There is a restriction when inserting data to this table: When inserting or updating rows into the table, NULL and values that are not set in the insert statement are both inserted as NULL. This may not have the desired effect if a default value in the target table is other than NULL.
@advanced_1038_p
各リンクテーブルの新しい接続は開かれます。多くのリンクテーブルが使用されている時、一部データベースにとってこれは問題となり得ます。Oracle XEでは、接続の最大数を増加することができます。Oracle XEは次の値の変更後、再起動する必要があります:
@advanced_1039_h2
トランザクション分離
@advanced_1040_p
このデータベースは次のトランザクション分離レベルをサポートしています:
@advanced_1041_b
Read Committed (コミット済み読み取り)
@advanced_1042_li
これはデフォルトレベルです。
read lockは早急に解除されます。 このレベルを使用する時、高い同時並行性が可能です。
これは多数のデータベースシステムで使用される分離レベルです。
@advanced_1043_li
これを有効にするには、 SQLステートメント 'SET LOCK_MODE 3' を実行します。
@advanced_1044_li
または、;LOCK_MODE=3 をデータベースURLに付け加えます: jdbc:h2:~/test;LOCK_MODE=3
@advanced_1045_b
Serializable (直列化)
@advanced_1046_li
これを有効にするには、 SQLステートメント 'SET LOCK_MODE 1' を実行します。
@advanced_1047_li
または、;LOCK_MODE=1 をデータベースURLに付け加えます: jdbc:h2:~/test;LOCK_MODE=1
@advanced_1048_b
Read Uncommitted (非コミット読み取り)
@advanced_1049_li
このレベルの意味は、トランザクション分離は無効だということです。
@advanced_1050_li
これを有効にするには、SQLステートメント 'SET LOCK_MODE 0' を実行します
@advanced_1051_li
または、;LOCK_MODE=0 をデータベースURLに付け加えます: jdbc:h2:~/test;LOCK_MODE=0
@advanced_1052_p
分離レベル "serializable" を使用している時、ダーティリード、反復不可能読み取り、 ファントムリードを防ぐことができます。
@advanced_1053_b
Dirty Reads (ダーティリード)
@advanced_1054_li
他の接続によるコミットされていない変更を読み取ることができる、という意味です。
@advanced_1055_li
実行可能: read uncommitted (非コミット読み取り)
@advanced_1056_b
Non-Repeatable Reads (反復不可能読み取り)
@advanced_1057_li
ひとつの接続が行を読み取り、 他の接続が行を変更し、コミットすると、最初の接続は同じ行を再読し、新しい結果を取得します。
@advanced_1058_li
実行可能: read uncommitted (非コミット読み取り)、read committed (コミット済み読み取り)
@advanced_1059_b
Phantom Reads (ファントムリード)
@advanced_1060_li
ひとつの接続が条件を使って行の集まりを読み取り、 他の接続がこの条件を壊して行を挿入し、コミットした時、最初の接続は同じ条件を使って再読し、 新しい行を取得します。
@advanced_1061_li
実行可能: read uncommitted (非コミット読み取り)、read committed (コミット済み読み取り)
@advanced_1062_h3
テーブルレベルロ�
资源文件列表:
version-1.0.79.zip 大约有1187个文件