SharpHsql -- 只适合用于演示数据的数据库引擎
但实际上,我认为SharpHsql应该谨慎地用于实际生产环境,我们先来了解一下它的存储原理。
不像其它的纯内存数据库或文件型数据库,SharpHSql在存储数据时相当取巧,使用.cfg文件存放一些数据库的信息和其它文件的位置,使用.log存放所有的DDL SQL,使用.data文件存放Cache的二进制序列化流,用.backup存放.data一样的数据,相当于多一个存放多一层保险。
查看SharpHsql源码,里面的处理还是比较简单的:
每一次insert delete (update会分解成先 delete 再 insert,只是 check 会放到 insert 后进行)都分别有一个 transaction 来对应
这个transaction是用于事务回滚时的rollback的,当rollback时,则用 delete 对应 insert ,用 insert 对应 delete
Table 是通过 Cache 来存放 Rows 的,也就是说数据的实际存储是在 Cache 这个类中
Index类是一棵AVL树,用来数据检索,当有row更新时,如果有索引存在,则需要更新这棵树
Channel就是用了区分transaction和权限检查,实际只是一个process中可以多channel访问同一数据库,而其它的process想访问是不行的
因为Database类打开数据库时,使用的是独占式文件打开,因为如果不独占的话,Cache的写入是会出问题的
数据库打开时的步骤:
1、取cfg文件,得到信息
2、反序列化.data,得到Cache
3、执行.log得到数据库结构
所以我们可以看出SharpHsql是独占式访问的,而且是完全加载所有数据到内存的
这样的结构我觉得仍然应该视其为一个内存数据库引擎,对于数据量会逐渐变大的实际生产环境来说,慎用;对于多并发环境来说,别用
所以SharpHsql要出pocket版本,使用compact framework,看来它的定位也是很准确的
如果利用SharpHSql的sql parser和 execute engine,使用 dataset 代替它的 index 和 cache,是可以很容易写出一个in memory database的,不过这种剽窃意义不大,只是说可行。
转载于:https://www.cnblogs.com/yangzixian/archive/2009/10/19/1586049.html
SharpHsql -- 只适合用于演示数据的数据库引擎相关推荐
- sql 只要一个字段相同则只显示一条数据_数据库
数据库:管理数据的仓库,其本质是一种数据结构. 一.数据 数据:即信息,包括视觉信息.听觉信息等等.当前数据库主要存储的是视觉信息(数字.文字等等) 二.数据库的组成 数据库是由一张张数据表组成的. ...
- ssis 导入excel_使用SSIS包将MS Excel数据导入数据库
ssis 导入excel The easiest way to import the data into the SQL database is using the Import Data wizar ...
- Python_爬虫数据存入数据库(超详细过程
目录 一.新建项目 二.程序的编写 三.数据的爬取 一.新建项目 1.在cmd窗口输入scrapy startproject [项目名称] 创建爬虫项目 接着创建爬虫文件,scrapy genspid ...
- 转:[Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!...
引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...
- 数据分析师只适合男生吗,女生可不可以胜任?
在大多数人眼中,理工科一般都是男生的天下,而适合女生的专业多数偏文艺类的路线.最近数据分析师很火,发展前景好,待遇也高,是人们眼中的高薪工作.于是乎数据分析师日益发展成为十分抢手的职业.数据分析师给人 ...
- php select只有一条_读取数据库如何只取出一条数据????请赐教!
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 感谢大家的帮助,我的问题解决了! 核心代码如下: if($_POST) { if($_POST['select'] === '') { echo(''); ...
- PolarFS :一个用于共享存储云数据库的超低延迟和容错分布式文件系统
目录 1. 简介 2. 背景 3. 架构 4. I/O 执行模型 5. 一致性模型 6. FS中层的实现 7. 设计选择和经验教训 8. 价值评估 9. 相关工作 10. 结论 PolarFS : A ...
- delphi 演示数据路径
链接里默认的--------------------------- Error --------------------------- I/O error for file "C:\Prog ...
- 新手项目:黑马blog (适合刚接触node和数据库MongoDB)
来源:黑马前端 难度:⭐⭐(基础)--的新适合刚接触node和数据库MongoDB手小白 所需知识: 第三方模块: express框架(用于创建网站服务器以及路由) moogoose(连接数据库和操作 ...
最新文章
- 5.1.14 守护线程
- python面试基本题(你需要的)
- CBV装饰校验的三种方式session
- 人工智能离我们有多远/近?
- 中小型局域网规划实战案例
- 【jetsonnano】jetsonnano串口通信与esp8266 cutecom和minicom使用
- 最新卡通渲染效果图(附带一张次世代帅哥)
- 南蛮图腾(洛谷-P1498)
- sql库缓存命中率_SQL Server内存性能指标–第4部分–缓冲区高速缓存命中率和页面寿命期望
- LSTM 之父发文:2010-2020,我眼中的深度学习十年简史
- spring mvc统一异常处理(@ControllerAdvice + @ExceptionHandler)
- 事件和数据回发机制的实现
- Webgoat 笔记总结 Insecure Communication/Configuration/Storage
- 2017锤子科技发布会
- Appium的工作原理
- ELK+filebeat+redis 日志分析平台
- 机械制图--零件图--过渡线
- 百度拾取坐标系统平台根据点名获取坐标
- 广州坐标系转换大地2000_如何将百度坐标转换为国家2000坐标系?
- 公司java项目上线生产环境发布流程
热门文章
- 怎么确定迭代器后面还有至少两个值_学会迭代和迭代器,让你的程序更省内存...
- oracle ogg11.2.0.3,ogg在oracle database 11.2.0.3上还是谨慎使用集成捕捉模式
- oracle 尚未从池中获取连接,解决一个问题的思路 之“解决已经写满con.close() 仍然出现但是尚未从池中获取连接的连接池耗尽问题”...
- navmenu 收起没有动画 element_ABC360等3家英语动画片课程测评:用动画片学英语不靠谱?...
- python写网页脚本_东拼西凑用python脚本登录web管理页面做巡检(实现)
- matlab中符号对象的数据类型是,符号对象(Symbolic Object)的使用
- 关于分布式系统架构模块通讯方式选择的问题
- Linux netfilter源码分析(4)
- Leetcode - 142. Linked List Cycle II
- 带你一文搞懂网络层的IP协议\数据链路层的以太网\ARP协议以及DNS和NAT协议