日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

初识EseNt

發(fā)布時(shí)間:2023/12/13 综合教程 28 生活家
生活随笔 收集整理的這篇文章主要介紹了 初识EseNt 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、什么是EseNt
EseNt(Extensible Storage Engine)是一個(gè)原生支持Windows的嵌入式數(shù)據(jù)庫引擎,屬于非關(guān)系型數(shù)據(jù)庫(NoSql),運(yùn)行于Windows平臺(tái)。性能和可靠性已經(jīng)受住了時(shí)間的考驗(yàn),每秒可以執(zhí)行大約10萬次插入操作夠變態(tài)。
EseNt數(shù)據(jù)庫引擎遵循開源軟件規(guī)則,可通過以下網(wǎng)址下載或查看更多的詳細(xì):
http://managedesent.codeplex.com/
msdn的Api描述:
http://msdn.microsoft.com/en-us/library/gg269245%28v=EXCHG.10%29.aspx
附:性能測試
建表Users,包含四個(gè)字段,1整形,2字符串,1日期型.
在不加查詢索引的情況下:插入30萬條記錄,用時(shí)15s,插入90萬條記錄,耗時(shí)48s,CPU占用率為30%+-
添加主鍵索引和一個(gè)text類型的查詢索引:插入3萬條記錄,耗時(shí)3.4s,插入30W條記錄,用時(shí)17.19s, CPU占用率為30%+
還是對Users表,表內(nèi)插入100W條記錄,對一個(gè)Text字段進(jìn)行查詢,耗時(shí)0.39s+-,但對30W條記錄作對象序列化時(shí)用了3.2s+-.
二、EseNt在C#中應(yīng)用
EseNt作為Windows平臺(tái)的數(shù)據(jù)庫引擎,使用C#可以方便將它集成到我們的項(xiàng)目中來,為我們的應(yīng)用服務(wù)。
從http://managedesent.codeplex.com/下載esent開發(fā)包,解壓得到兩個(gè).dll文件:Esent.Collections.dll, Esent.Interop.dll,從這兩個(gè)文件的命名,我們可以清楚的知道它們的用途,
Esent.Collections.dll為數(shù)據(jù)容器包,Esent.Interop.dll為用到的API函數(shù)集合,將這兩個(gè)文件引用到項(xiàng)目中來。
OK, 現(xiàn)在可以讓esent為我們的應(yīng)用服務(wù)了。
一般,在應(yīng)用中,我們分幾步來使EseNt為我們工作:
1、創(chuàng)建一個(gè)實(shí)例對象:
在esent里提供了函數(shù)用于完成此項(xiàng)功能:
Api.JetCreateInstance(out instance, InstanceKey);
同時(shí)通過JetSetSystemParameter函數(shù)設(shè)置此實(shí)例的一些屬性,如下代碼設(shè)置了當(dāng)時(shí)實(shí)例刪除不需要用到的日志
Api.JetSetSystemParameter(instance, JET_SESID.Nil, JET_param.CircularLog, 1, null);
采用JetInit對當(dāng)前實(shí)例初始化,使instance可用
Api.JetInit(ref instance);
2、開始一個(gè)會(huì)話對象:
通過Api.JetBeginSession開始一個(gè)實(shí)例的會(huì)話
Api.JetBeginSession(instance, out sesid, null, null);
3、應(yīng)用實(shí)例對象和會(huì)話對象進(jìn)行數(shù)據(jù)庫的操作:
3.1、創(chuàng)建數(shù)據(jù)庫
Api.JetCreateDatabase(sesId, FullDbName, null, out dbId, CreateDatabaseGrbit.OverwriteExisting);
3.2、打開數(shù)據(jù)庫
注意:在打開數(shù)據(jù)庫前,得先用Api.JetAttachDatabase將備用數(shù)據(jù)庫附加到當(dāng)前會(huì)話,不然會(huì)引發(fā) No such database 異常.
Api.JetAttachDatabase(sesId, FullDbName, AttachDatabaseGrbit.None);
Api.JetOpenDatabase(sesId, FullDbName, null, out dbId, OpenDatabaseGrbit.None);
3.3、創(chuàng)建表
JET_TABLEID table;
Api.JetCreateTable(sesId, dbId, "users", 0, 100, out table);
3.4、打開表
此處用了打開表時(shí)的只讀屬性,在讀時(shí)會(huì)應(yīng)該快一些吧~
Api.JetOpenTable(sesId, dbId, "users", null, 0, OpenTableGrbit.ReadOnly, out table);
3.5、創(chuàng)建表結(jié)構(gòu)
Api.JetBeginTransaction(sesId);
JET_COLUMNDEF columndef = new JET_COLUMNDEF();
JET_COLUMNID columnId;
JET_COLUMNID columnName;
JET_COLUMNID columnBirthday;
JET_COLUMNID columnRemark;

columndef.coltyp = JET_coltyp.Long;
columndef.cp = JET_CP.ASCII;
Api.JetAddColumn(sesId, table, "Id", columndef, null, 0, out columnId);

columndef.coltyp = JET_coltyp.Text;
columndef.cp = JET_CP.Unicode;
Api.JetAddColumn(sesId, table, "Name", columndef, null, 0, out columnName);

columndef.coltyp = JET_coltyp.DateTime;
columndef.cp = JET_CP.ASCII;
Api.JetAddColumn(sesId, table, "Birthday", columndef, null, 0, out columnBirthday);

columndef.coltyp = JET_coltyp.LongText;
columndef.cp = JET_CP.Unicode;
Api.JetAddColumn(sesId, table, "Remark", columndef, null, 0, out columnRemark);

Api.JetCommitTransaction(sesId, CommitTransactionGrbit.None);

通過以上的話句創(chuàng)建了一個(gè) users表的數(shù)據(jù)結(jié)構(gòu),其中包括了字段: Id,整型 Name,255長度的通用碼 Birthday,日期類型 Remark,2G長度的通用碼

3.6、插入數(shù)據(jù)信息

Api.JetBeginTransaction(sesId);
Api.JetPrepareUpdate(sesId, table, JET_prep.Insert);
Api.SetColumn(sesId, table, columnId, 1);
Api.SetColumn(sesId, table, columnName, "毛哥哥", Encoding.Unicode);
Api.SetColumn(sesId, table, columnRemark, "毛哥哥,中國革命家、戰(zhàn)略家、理論家和詩人,中國毛哥哥、中國人民解放軍和中華人民共和國的主要締造者和領(lǐng)袖,毛哥哥思想的主要?jiǎng)?chuàng)立者。字潤之(原作詠芝,后改潤芝),筆名子任。1893年出生于湖南省長沙府湘潭縣韶山?jīng)_,1976年逝世于北京。從1949年到1976年,毛哥哥是中華人民共和國的最高領(lǐng)導(dǎo)人。他對馬克思列寧主義的發(fā)展、軍事理論的貢獻(xiàn)以及對毛哥哥的理論貢獻(xiàn)是毛哥哥思想最重要的組成部分。毛哥哥被視為現(xiàn)代世界歷史中最重要的人物之一,《時(shí)代》雜志將他評為20世紀(jì)最具影響100人之一。", Encoding.Unicode);
Api.SetColumn(sesId, table, columnBirthday, new DateTime(1893,7,1));
Api.JetUpdate(sesId, table);
Api.JetCommitTransaction(sesId, CommitTransactionGrbit.None);

通過以上代碼寫對已創(chuàng)建的Users表寫入一條記錄.

3.7、查詢
3.8、讀取數(shù)據(jù)
4、資源回收
在使用完資源回收是個(gè)很好的習(xí)慣,建議大家在代碼中很好的貫徹這個(gè)習(xí)慣,使你的應(yīng)用更加健壯.
4.1、表資源回收
一般在使用完表后就回收
Api.JetCloseTable(sesId, table);
4.2、數(shù)據(jù)庫資源回收
Api.JetCloseDatabase(sesId, dbId, CloseDatabaseGrbit.None);
4.3、結(jié)束會(huì)話對象
Api.JetEndSession(sesId, EndSessionGrbit.None);
4.4、清空實(shí)例對象
Api.JetTerm(instance);

總結(jié)

以上是生活随笔為你收集整理的初识EseNt的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。