SlideShare a Scribd company logo
1 of 24
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もしくはAccessのインストールが
必須。だがこれでもMDBは過去互換性のために使えるといった程度と割り切る
 MDBは捨てる
 SQLite
 OSS/PDSであることが問題にならければ、一番の推奨
 SQL Server Compact Edition
 開発終了、終了、終了、終了・・・・・・なのでもう使っちゃダメ
 ESE(Extensible Storage Engine)
11
ESENT(Extensible Storage Engine)
 Windows 2000以降Windowsに標準搭載されたISAM(Indexed and
Sequential Access Method)エンジン
 マルチユーザー、マルチインスタンスに対応
 Jet Blueと呼ばれたり。
 JETデータベースのフォーマット
 高い可用性
 トランザクションログと、そこからのロールバック
 高いパフォーマンス
 安心の実績
 Active Directoryのデータベースとして使用
 Exchange Serverのデータベースとして使用
12
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
Database
 2,4,8,16,32kBのページサイズ、このうち16,32kBはWindows 7,
Exchange 2010以降
 1データベース1ファイル
 1ファイルの最大サイズはページサイズ×232、16kBであれば、16TB
14
Table, Record, Columns
 レコードの集合
 レコードはカラムの集合
 カラムにデータが格納される
 テーブルに対して、クラスタインデックス、非クラスタインデックスが付
けられる。インデックスの形式はB+Trees
15
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
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
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
Demo 19
PersistentDictionary
 ESENTを使用する際の手順を大幅に簡略化
 使用感覚は普通のDictionary
 可用性
 使用中にプロセスがクラッシュしても、データベースが自動的にトランザク
ションログからデータを復旧
 並列性
 複数スレッドからのアクセスに対応
 スケール
 1カラム最大2GBまでのデータ、最大16TBのデータベースサイズ
20
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
PersistentDictionary
 制約
 使用できる型に制約がある
 Keyとして使用できるデータ型
 Boolean, Byte, Int16, UInt16,Int32, UInt32, Int64, Float, Double, Guid,
DateTime, TimeSpan, String
 Valueとして使用できるデータ型
 Key値として使用できるデータ型とUri、IPAddress
 それらを使用した構造体、ただしSerializable属性が必要
 配列は使用できない(構造体内も同様)
 許可されている物以外の参照型変数
22
Demo 23
資料
 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

More Related Content

Similar to Esentのススメ

Team Foundation Server 2012 「Express」って何?
Team Foundation Server 2012 「Express」って何?Team Foundation Server 2012 「Express」って何?
Team Foundation Server 2012 「Express」って何?__Black
 
jBOLT Ver3.2
jBOLT Ver3.2jBOLT Ver3.2
jBOLT Ver3.2skudoh
 
Jsf アプリ作ったった
Jsf アプリ作ったったJsf アプリ作ったった
Jsf アプリ作ったったOda Shinsuke
 
LightSwitch ~結局何ができるの~ rev 2
LightSwitch ~結局何ができるの~ rev 2LightSwitch ~結局何ができるの~ rev 2
LightSwitch ~結局何ができるの~ rev 2Yoshitaka Seo
 
LibreOffice Base をSQLite のフロントエンドにしてみよう
LibreOffice Base をSQLite のフロントエンドにしてみようLibreOffice Base をSQLite のフロントエンドにしてみよう
LibreOffice Base をSQLite のフロントエンドにしてみよう78tch
 
Daisukei vsug ef
Daisukei vsug efDaisukei vsug ef
Daisukei vsug efvsug_jim
 
【17-E-2】分散されたデータをいかに統合するのか 
【17-E-2】分散されたデータをいかに統合するのか 【17-E-2】分散されたデータをいかに統合するのか 
【17-E-2】分散されたデータをいかに統合するのか nisobe58
 
更に進化するCSSの表現力と 新しいWebツール [Reloaded]
更に進化するCSSの表現力と 新しいWebツール [Reloaded]更に進化するCSSの表現力と 新しいWebツール [Reloaded]
更に進化するCSSの表現力と 新しいWebツール [Reloaded]Keisuke Todoroki
 
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu GotoInsight Technology, Inc.
 
[db tech showcase Tokyo 2017] E24: 流行りに乗っていれば幸せになれますか?数あるデータベースの中から敢えて今Db2が選ば...
[db tech showcase Tokyo 2017] E24: 流行りに乗っていれば幸せになれますか?数あるデータベースの中から敢えて今Db2が選ば...[db tech showcase Tokyo 2017] E24: 流行りに乗っていれば幸せになれますか?数あるデータベースの中から敢えて今Db2が選ば...
[db tech showcase Tokyo 2017] E24: 流行りに乗っていれば幸せになれますか?数あるデータベースの中から敢えて今Db2が選ば...Insight Technology, Inc.
 
そろそろレガシーな.Net開発をやめなイカ?
そろそろレガシーな.Net開発をやめなイカ?そろそろレガシーな.Net開発をやめなイカ?
そろそろレガシーな.Net開発をやめなイカ?Yuta Matsumura
 
ASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おうASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おうDevTakas
 
Microsoft新しいブラウザーのウワサ
Microsoft新しいブラウザーのウワサMicrosoft新しいブラウザーのウワサ
Microsoft新しいブラウザーのウワサYoshihisa Ozaki
 
Oracle?SQL Server?PostgreSQL?誰でも簡単にできる異種DB移行・連携
Oracle?SQL Server?PostgreSQL?誰でも簡単にできる異種DB移行・連携Oracle?SQL Server?PostgreSQL?誰でも簡単にできる異種DB移行・連携
Oracle?SQL Server?PostgreSQL?誰でも簡単にできる異種DB移行・連携株式会社クライム
 
TF Seminar 20110218
TF Seminar 20110218TF Seminar 20110218
TF Seminar 20110218hirookun
 
【de:code 2020】 PostgreSQL もスケールさせよう! - Hyperscale (Citus) -
【de:code 2020】 PostgreSQL もスケールさせよう! - Hyperscale (Citus) -【de:code 2020】 PostgreSQL もスケールさせよう! - Hyperscale (Citus) -
【de:code 2020】 PostgreSQL もスケールさせよう! - Hyperscale (Citus) -日本マイクロソフト株式会社
 
ビッグデータやIoTシステムを支えるデータベース 『GridDB』
ビッグデータやIoTシステムを支えるデータベース 『GridDB』ビッグデータやIoTシステムを支えるデータベース 『GridDB』
ビッグデータやIoTシステムを支えるデータベース 『GridDB』griddb
 

Similar to Esentのススメ (20)

Team Foundation Server 2012 「Express」って何?
Team Foundation Server 2012 「Express」って何?Team Foundation Server 2012 「Express」って何?
Team Foundation Server 2012 「Express」って何?
 
jBOLT Ver3.2
jBOLT Ver3.2jBOLT Ver3.2
jBOLT Ver3.2
 
Jsf アプリ作ったった
Jsf アプリ作ったったJsf アプリ作ったった
Jsf アプリ作ったった
 
LightSwitch ~結局何ができるの~ rev 2
LightSwitch ~結局何ができるの~ rev 2LightSwitch ~結局何ができるの~ rev 2
LightSwitch ~結局何ができるの~ rev 2
 
ODS ってなんだ?
ODS ってなんだ?ODS ってなんだ?
ODS ってなんだ?
 
LibreOffice Base をSQLite のフロントエンドにしてみよう
LibreOffice Base をSQLite のフロントエンドにしてみようLibreOffice Base をSQLite のフロントエンドにしてみよう
LibreOffice Base をSQLite のフロントエンドにしてみよう
 
Daisukei vsug ef
Daisukei vsug efDaisukei vsug ef
Daisukei vsug ef
 
CData Software の紹介
CData Software の紹介CData Software の紹介
CData Software の紹介
 
【17-E-2】分散されたデータをいかに統合するのか 
【17-E-2】分散されたデータをいかに統合するのか 【17-E-2】分散されたデータをいかに統合するのか 
【17-E-2】分散されたデータをいかに統合するのか 
 
更に進化するCSSの表現力と 新しいWebツール [Reloaded]
更に進化するCSSの表現力と 新しいWebツール [Reloaded]更に進化するCSSの表現力と 新しいWebツール [Reloaded]
更に進化するCSSの表現力と 新しいWebツール [Reloaded]
 
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
 
[db tech showcase Tokyo 2017] E24: 流行りに乗っていれば幸せになれますか?数あるデータベースの中から敢えて今Db2が選ば...
[db tech showcase Tokyo 2017] E24: 流行りに乗っていれば幸せになれますか?数あるデータベースの中から敢えて今Db2が選ば...[db tech showcase Tokyo 2017] E24: 流行りに乗っていれば幸せになれますか?数あるデータベースの中から敢えて今Db2が選ば...
[db tech showcase Tokyo 2017] E24: 流行りに乗っていれば幸せになれますか?数あるデータベースの中から敢えて今Db2が選ば...
 
そろそろレガシーな.Net開発をやめなイカ?
そろそろレガシーな.Net開発をやめなイカ?そろそろレガシーな.Net開発をやめなイカ?
そろそろレガシーな.Net開発をやめなイカ?
 
ASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おうASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おう
 
Microsoft新しいブラウザーのウワサ
Microsoft新しいブラウザーのウワサMicrosoft新しいブラウザーのウワサ
Microsoft新しいブラウザーのウワサ
 
Web matrix2とvisual studio
Web matrix2とvisual studioWeb matrix2とvisual studio
Web matrix2とvisual studio
 
Oracle?SQL Server?PostgreSQL?誰でも簡単にできる異種DB移行・連携
Oracle?SQL Server?PostgreSQL?誰でも簡単にできる異種DB移行・連携Oracle?SQL Server?PostgreSQL?誰でも簡単にできる異種DB移行・連携
Oracle?SQL Server?PostgreSQL?誰でも簡単にできる異種DB移行・連携
 
TF Seminar 20110218
TF Seminar 20110218TF Seminar 20110218
TF Seminar 20110218
 
【de:code 2020】 PostgreSQL もスケールさせよう! - Hyperscale (Citus) -
【de:code 2020】 PostgreSQL もスケールさせよう! - Hyperscale (Citus) -【de:code 2020】 PostgreSQL もスケールさせよう! - Hyperscale (Citus) -
【de:code 2020】 PostgreSQL もスケールさせよう! - Hyperscale (Citus) -
 
ビッグデータやIoTシステムを支えるデータベース 『GridDB』
ビッグデータやIoTシステムを支えるデータベース 『GridDB』ビッグデータやIoTシステムを支えるデータベース 『GridDB』
ビッグデータやIoTシステムを支えるデータベース 『GridDB』
 

More from Tadahiro Ishisaka

Windows環境でのgitまとめ(2016.8)
Windows環境でのgitまとめ(2016.8)Windows環境でのgitまとめ(2016.8)
Windows環境でのgitまとめ(2016.8)Tadahiro Ishisaka
 
Visual studioとそのライバル
Visual studioとそのライバルVisual studioとそのライバル
Visual studioとそのライバルTadahiro Ishisaka
 
Windows環境でのgitまとめ(2016.1)
Windows環境でのgitまとめ(2016.1)Windows環境でのgitまとめ(2016.1)
Windows環境でのgitまとめ(2016.1)Tadahiro Ishisaka
 
Visual studio 2015 update1 ctpとcsi
Visual studio 2015 update1 ctpとcsiVisual studio 2015 update1 ctpとcsi
Visual studio 2015 update1 ctpとcsiTadahiro Ishisaka
 
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門Tadahiro Ishisaka
 
Git for windows情報アップデート 2014年10月5日
Git for windows情報アップデート 2014年10月5日Git for windows情報アップデート 2014年10月5日
Git for windows情報アップデート 2014年10月5日Tadahiro Ishisaka
 
クラウド・コンピューティング サバイバルガイド
クラウド・コンピューティング サバイバルガイドクラウド・コンピューティング サバイバルガイド
クラウド・コンピューティング サバイバルガイドTadahiro Ishisaka
 
ビジネス向けアプリケーションにこそ進めるMicro orm
ビジネス向けアプリケーションにこそ進めるMicro ormビジネス向けアプリケーションにこそ進めるMicro orm
ビジネス向けアプリケーションにこそ進めるMicro ormTadahiro Ishisaka
 
Jazug3周年lt deployブランチを追加してみましょう
Jazug3周年lt deployブランチを追加してみましょうJazug3周年lt deployブランチを追加してみましょう
Jazug3周年lt deployブランチを追加してみましょうTadahiro Ishisaka
 
Build insider offline session チームでのgit
Build insider offline session チームでのgitBuild insider offline session チームでのgit
Build insider offline session チームでのgitTadahiro Ishisaka
 
Hokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.jsHokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.jsTadahiro Ishisaka
 
開発から見たWindowsの国際化機能
開発から見たWindowsの国際化機能開発から見たWindowsの国際化機能
開発から見たWindowsの国際化機能Tadahiro Ishisaka
 
Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Tadahiro Ishisaka
 
私はこの本でネットワークを学んだ
私はこの本でネットワークを学んだ私はこの本でネットワークを学んだ
私はこの本でネットワークを学んだTadahiro Ishisaka
 
静岡Developers勉強会 第11回 第12章 遅延評価
静岡Developers勉強会 第11回 第12章 遅延評価静岡Developers勉強会 第11回 第12章 遅延評価
静岡Developers勉強会 第11回 第12章 遅延評価Tadahiro Ishisaka
 
Windows Windows上に作るチーム開発環境
Windows Windows上に作るチーム開発環境Windows Windows上に作るチーム開発環境
Windows Windows上に作るチーム開発環境Tadahiro Ishisaka
 

More from Tadahiro Ishisaka (20)

Windowsでhaskell
WindowsでhaskellWindowsでhaskell
Windowsでhaskell
 
Windows環境でのgitまとめ(2016.8)
Windows環境でのgitまとめ(2016.8)Windows環境でのgitまとめ(2016.8)
Windows環境でのgitまとめ(2016.8)
 
Visual studioとそのライバル
Visual studioとそのライバルVisual studioとそのライバル
Visual studioとそのライバル
 
Windows環境でのgitまとめ(2016.1)
Windows環境でのgitまとめ(2016.1)Windows環境でのgitまとめ(2016.1)
Windows環境でのgitまとめ(2016.1)
 
Visual studio 2015 update1 ctpとcsi
Visual studio 2015 update1 ctpとcsiVisual studio 2015 update1 ctpとcsi
Visual studio 2015 update1 ctpとcsi
 
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
 
Git for windows情報アップデート 2014年10月5日
Git for windows情報アップデート 2014年10月5日Git for windows情報アップデート 2014年10月5日
Git for windows情報アップデート 2014年10月5日
 
クラウド・コンピューティング サバイバルガイド
クラウド・コンピューティング サバイバルガイドクラウド・コンピューティング サバイバルガイド
クラウド・コンピューティング サバイバルガイド
 
ビジネス向けアプリケーションにこそ進めるMicro orm
ビジネス向けアプリケーションにこそ進めるMicro ormビジネス向けアプリケーションにこそ進めるMicro orm
ビジネス向けアプリケーションにこそ進めるMicro orm
 
Jazug3周年lt deployブランチを追加してみましょう
Jazug3周年lt deployブランチを追加してみましょうJazug3周年lt deployブランチを追加してみましょう
Jazug3周年lt deployブランチを追加してみましょう
 
Build insider offline session チームでのgit
Build insider offline session チームでのgitBuild insider offline session チームでのgit
Build insider offline session チームでのgit
 
Hokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.jsHokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.js
 
Sysprep
SysprepSysprep
Sysprep
 
開発から見たWindowsの国際化機能
開発から見たWindowsの国際化機能開発から見たWindowsの国際化機能
開発から見たWindowsの国際化機能
 
Shizudev git hub宿題
Shizudev git hub宿題Shizudev git hub宿題
Shizudev git hub宿題
 
Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Ossで作成するチーム開発環境
Ossで作成するチーム開発環境
 
私はこの本でネットワークを学んだ
私はこの本でネットワークを学んだ私はこの本でネットワークを学んだ
私はこの本でネットワークを学んだ
 
Netduino
NetduinoNetduino
Netduino
 
静岡Developers勉強会 第11回 第12章 遅延評価
静岡Developers勉強会 第11回 第12章 遅延評価静岡Developers勉強会 第11回 第12章 遅延評価
静岡Developers勉強会 第11回 第12章 遅延評価
 
Windows Windows上に作るチーム開発環境
Windows Windows上に作るチーム開発環境Windows Windows上に作るチーム開発環境
Windows Windows上に作るチーム開発環境
 

Esentのススメ