日期:2014-05-18  浏览次数:20925 次

200分,用DataSet实现内存数据库的设想,发帖探讨
微软没有成熟的内存数据库可用,当游戏或者大型应用。
频繁修改对象访问(可以对应到数据表)状态时,IO性能将成为系统瓶颈。
MemeCached不能解决全部问题,尤其是级联查询非主键字段的情况。
因此需要有个内存数据库的架构,加大内存,缓解IO。

我思考,是否可以用DataSet实现内存数据库?

1,有一个全局的静态的DataSet名叫DS,结构和物理数据库完全一致,可以在项目启动时,映射到内存里,数据是空的。
2,大量并发访问时,查询时发现内存中没有的数据,再从物理数据库灌进来,同时进缓存MemeCached
3,有主键的数据从集群缓存MemeCached里取。
3,插入和修改先进DS,延迟一段时间再进物理库。
4,DS的大小自动维护,不超过系统内存可用量。

以上只是思路,想看看大家思考后会有什么结果,预料到什么问题?



------解决方案--------------------
数据进入DS后,还是可以手动改数据的,俗称外挂
------解决方案--------------------
这方面不太懂,只是想了解高手的思路
------解决方案--------------------
想法很不错!
这方面我也不太懂,不过按照“3,插入和修改先进DS,延迟一段时间再进物理库。”这一条来说是不是需要维护一个很大的消息队列来控制DS数据-->物理数据库的操作?
------解决方案--------------------
是一种以空间换时间的手段么,总觉得不太好维护
------解决方案--------------------
3,插入和修改先进DS,延迟一段时间再进物理库。
======
如果数据加中 存在"假删"操作,即通过update某条数据的某个字段来实现冻结此条数据
这一操作先进DS 后持久化进库
那么在这段"延迟"时间内,这条数据还是有效的?
------解决方案--------------------
还有,datatable和dataview虽然可以支持简单SQL的效果,但一些复杂SQL处理起来就麻烦了,如果复杂SQL直接去访问DB的话,就会因为DS与DB交互延时会对数据整合性有影响

个人感觉如果要实现的话,比较困难