日期:2014-05-17  浏览次数:20902 次

请问,数据库与序列化
问一个弱弱的问题:

每次使用应用程序时,使用DataTable处理数据,完了,把DataTable序列化成一个.dat文件,下次使用时,再反序列化。
如此说来,数据库(比如Access)岂不是排不上用场吗?

------解决方案--------------------
你现在程序太小了;所以说体现不出数据库的好处,序列化相当于保存你的工作进程 就好比你玩游戏的时候升级了 下次再进游戏的时候保存你上次在游戏中的信息,同样数据库也能做到, 你要知道 数据是有价值的
------解决方案--------------------
序列化就是把一个对象保存到一个文件或数据库字段中去
在进程下次启动时读取上次保存的对象的信息
在不同的AppDomain或进程之间传递数据
在分布式应用系统中传递数据

------解决方案--------------------
简单来说,这就是结构化存储和非结构化存储的区别

你的方法在小数据量,特定应用是非常适合的,但如果datatable中有10w条记录,现在修改一条你就需要重写这个dat,开销相当大,另外如果只是查询一条记录你也需要重新将这个dat所有内容加载到内存建立对应的对象。

另外这个dat不能给其他程序使用,不能进行多进程访问,不能变化语言,如果是Java肯定不能'简单'解析。

Access, SQL Server可以简单理解做了2件事情,第一他提供了统一界面,任何语言任何进程通过sql都可以与之通讯,获取数据。第二件事情他提供了索引机制,通过索引不需要加载所有数据到内存就能根据sql定位查询结果。

但是如果你的应用很小,内存足够hold住数据,且不需要实时保存,那么你的方法是可行的,而且可以说比用access都好,呵呵。

具体问题具体分析,合适就好。
------解决方案--------------------
数据库主要是用来做数据查询的。
如果你是纯内存操作+日志的模式,确实不需要数据库。
------解决方案--------------------
单机系统、数据量少,可以这么干不要数据库。