More Related Content
Similar to Esentのススメ (20)
More from Tadahiro Ishisaka (20)
Esentのススメ
- 11. アプリケーション組み込み型DBの
選択肢
MDBにこだわる
64bit版Office インストールを条件にMicrosoft.ACE.OLEDBを使用する。
Officeの付属コンポーネントなので、Office ProもしくはAccessのインストールが
必須。だがこれでもMDBは過去互換性のために使えるといった程度と割り切る
MDBは捨てる
SQLite
OSS/PDSであることが問題にならければ、一番の推奨
SQL Server Compact Edition
開発終了、終了、終了、終了・・・・・・なのでもう使っちゃダメ
ESE(Extensible Storage Engine)
11
- 12. ESENT(Extensible Storage Engine)
Windows 2000以降Windowsに標準搭載されたISAM(Indexed and
Sequential Access Method)エンジン
マルチユーザー、マルチインスタンスに対応
Jet Blueと呼ばれたり。
JETデータベースのフォーマット
高い可用性
トランザクションログと、そこからのロールバック
高いパフォーマンス
安心の実績
Active Directoryのデータベースとして使用
Exchange Serverのデータベースとして使用
12
- 13. MDB(JET Red)との違い
ESENTはWindowsの標準API
JET REDはODBCドライバ、OLE DBドライバ(MDACで配布)
MDACは64bit版がなくWindows Server 2012以降非推奨
ESENTは大容量対応(16TB)
JET REDは4GBの壁
ESENTはマルチユーザー、マルチインスタンス対応
JET Redはできない事はないが難しい
トランザクションログがなくロールバックが構造的に出来ない
よく壊れる
13
- 15. Table, Record, Columns
レコードの集合
レコードはカラムの集合
カラムにデータが格納される
テーブルに対して、クラスタインデックス、非クラスタインデックスが付
けられる。インデックスの形式はB+Trees
15
- 16. ESENTのテーブルで使用できる
データ型
数値
Unsinged Byte, Short, Unsigned Short, Long, Unsigned Long, LongLong
IEEE Single, IEEE Double
Currency
Bit
日付
DateTime(8byte)
文字
Text(<=255Byte), Long Text(<2GB)
バイナリ
Binary(<+256Byte), Long Binary(<2GB)
Guid
16
- 17. ESENT Managed Interface
ESEのAPIを.NETのコードから使用するためのInterop Rapperと
Dictionaryを拡張を拡張したより使いやすいライブラリ
Microsoft.Isam.Esent.Interop
ESENT APIにアクセスするためのライブラリ
基本的にWin32APIのESENT APIと同じ構成
PersistentDictionary
Dictionary(Tkey, Tvalue)を拡張して、Dictionaryの内容をESEに保存する
17
- 21. PersistentDictionary
パフォーマンス
21
Sequential inserts 32,000 entries/second
Random inserts 17,000 entries/second
Random Updates 36,000 entries/second
Random lookups (database cached
in memory)
137,000 entries/second
Linq queries (range of records) 14,000 queries/second
出典: ESE Managed Interface@CodePlex
- 22. PersistentDictionary
制約
使用できる型に制約がある
Keyとして使用できるデータ型
Boolean, Byte, Int16, UInt16,Int32, UInt32, Int64, Float, Double, Guid,
DateTime, TimeSpan, String
Valueとして使用できるデータ型
Key値として使用できるデータ型とUri、IPAddress
それらを使用した構造体、ただしSerializable属性が必要
配列は使用できない(構造体内も同様)
許可されている物以外の参照型変数
22
- 24. 資料
WEB
ESENT Managed Interface(Code Plex)
Extensible Storage Engine – Wikipedia
Microsoft Jet Database Engine – Wikipedia
Extensible Storage Engine Managed Reference – MSDN
ManagedEsent – Nuget
本日のDemo
https://github.com/ishisaka/VbEsentSample
24