Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
ESENTのススメ
MICROSOFT MVP FOR VISUAL BASICだったこともある
石坂忠広
http://opcdiary.net
1
みなさん
JETデータベースは
お好きですよね。
2
MDBファイルとは
オトモダチですよね?
3
ADO/ADO.NETで
JET OLE DB Driver
ですよね?
4
しかし!
5
近年困ったことが
6
諸君らの愛してくれた
JET OLE DB Driver(4.0)は死んだ、
何故だ!
7
32bitだからさ
8
Windows Server 2012以降
MDACで配布される32bitの
ODBC/OLE DBドライバの使用が
推奨されなくなり、
将来なくなる可能性が大!
その中にJET(MDB)のドライバも!!
9
どうするよ?
10
アプリケーション組み込み型DBの
選択肢
 MDBにこだわる
 64bit版Office インストールを条件にMicrosoft.ACE.OLEDBを使用する。
 Officeの付属コンポーネントなので、Office ProもしくはAcc...
ESENT(Extensible Storage Engine)
 Windows 2000以降Windowsに標準搭載されたISAM(Indexed and
Sequential Access Method)エンジン
 マルチユーザー、マ...
MDB(JET Red)との違い
 ESENTはWindowsの標準API
 JET REDはODBCドライバ、OLE DBドライバ(MDACで配布)
 MDACは64bit版がなくWindows Server 2012以降非推奨
 E...
Database
 2,4,8,16,32kBのページサイズ、このうち16,32kBはWindows 7,
Exchange 2010以降
 1データベース1ファイル
 1ファイルの最大サイズはページサイズ×232、16kBであれば、16...
Table, Record, Columns
 レコードの集合
 レコードはカラムの集合
 カラムにデータが格納される
 テーブルに対して、クラスタインデックス、非クラスタインデックスが付
けられる。インデックスの形式はB+Trees
...
ESENTのテーブルで使用できる
データ型
 数値
 Unsinged Byte, Short, Unsigned Short, Long, Unsigned Long, LongLong
 IEEE Single, IEEE Doubl...
ESENT Managed Interface
 ESEのAPIを.NETのコードから使用するためのInterop Rapperと
Dictionaryを拡張を拡張したより使いやすいライブラリ
 Microsoft.Isam.Esent.I...
Microsoft.Isam.Esent.Interop
 ESENTのドキュメント参照
 http://msdn.microsoft.com/en-us/library/dn375980(v=exchg.10).aspx
 パフォーマン...
Demo 19
PersistentDictionary
 ESENTを使用する際の手順を大幅に簡略化
 使用感覚は普通のDictionary
 可用性
 使用中にプロセスがクラッシュしても、データベースが自動的にトランザク
ションログからデータを復旧...
PersistentDictionary
 パフォーマンス
21
Sequential inserts 32,000 entries/second
Random inserts 17,000 entries/second
Random Upd...
PersistentDictionary
 制約
 使用できる型に制約がある
 Keyとして使用できるデータ型
 Boolean, Byte, Int16, UInt16,Int32, UInt32, Int64, Float, Dou...
Demo 23
資料
 WEB
 ESENT Managed Interface(Code Plex)
 Extensible Storage Engine – Wikipedia
 Microsoft Jet Database Engine – Wi...
Upcoming SlideShare
Loading in …5
×

Esentのススメ

1,395 views

Published on

Windowsに標準搭載されているESEを.NET辛子要するための基本的な情報です。
CLR/H東京#2 LT資料
ソースコードはこちら
https://github.com/ishisaka/VbEsentSample

Published in: Software
  • Be the first to comment

  • Be the first to like this

Esentのススメ

  1. 1. ESENTのススメ MICROSOFT MVP FOR VISUAL BASICだったこともある 石坂忠広 http://opcdiary.net 1
  2. 2. みなさん JETデータベースは お好きですよね。 2
  3. 3. MDBファイルとは オトモダチですよね? 3
  4. 4. ADO/ADO.NETで JET OLE DB Driver ですよね? 4
  5. 5. しかし! 5
  6. 6. 近年困ったことが 6
  7. 7. 諸君らの愛してくれた JET OLE DB Driver(4.0)は死んだ、 何故だ! 7
  8. 8. 32bitだからさ 8
  9. 9. Windows Server 2012以降 MDACで配布される32bitの ODBC/OLE DBドライバの使用が 推奨されなくなり、 将来なくなる可能性が大! その中にJET(MDB)のドライバも!! 9
  10. 10. どうするよ? 10
  11. 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. 12. ESENT(Extensible Storage Engine)  Windows 2000以降Windowsに標準搭載されたISAM(Indexed and Sequential Access Method)エンジン  マルチユーザー、マルチインスタンスに対応  Jet Blueと呼ばれたり。  JETデータベースのフォーマット  高い可用性  トランザクションログと、そこからのロールバック  高いパフォーマンス  安心の実績  Active Directoryのデータベースとして使用  Exchange Serverのデータベースとして使用 12
  13. 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
  14. 14. Database  2,4,8,16,32kBのページサイズ、このうち16,32kBはWindows 7, Exchange 2010以降  1データベース1ファイル  1ファイルの最大サイズはページサイズ×232、16kBであれば、16TB 14
  15. 15. Table, Record, Columns  レコードの集合  レコードはカラムの集合  カラムにデータが格納される  テーブルに対して、クラスタインデックス、非クラスタインデックスが付 けられる。インデックスの形式はB+Trees 15
  16. 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. 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
  18. 18. Microsoft.Isam.Esent.Interop  ESENTのドキュメント参照  http://msdn.microsoft.com/en-us/library/dn375980(v=exchg.10).aspx  パフォーマンス 18 Insert records 132,000 records/second Update one record 157,000 updates/second Read one record 1,149,000 retrieves/second Scan all records (sequential) 794,000 records/second Seek to all records (random order) 266,000 seeks/second 出典: ESE Managed Interface@CodePlex
  19. 19. Demo 19
  20. 20. PersistentDictionary  ESENTを使用する際の手順を大幅に簡略化  使用感覚は普通のDictionary  可用性  使用中にプロセスがクラッシュしても、データベースが自動的にトランザク ションログからデータを復旧  並列性  複数スレッドからのアクセスに対応  スケール  1カラム最大2GBまでのデータ、最大16TBのデータベースサイズ 20
  21. 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. 22. PersistentDictionary  制約  使用できる型に制約がある  Keyとして使用できるデータ型  Boolean, Byte, Int16, UInt16,Int32, UInt32, Int64, Float, Double, Guid, DateTime, TimeSpan, String  Valueとして使用できるデータ型  Key値として使用できるデータ型とUri、IPAddress  それらを使用した構造体、ただしSerializable属性が必要  配列は使用できない(構造体内も同様)  許可されている物以外の参照型変数 22
  23. 23. Demo 23
  24. 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

×