【发布时间】:2011-02-02 04:00:45
【问题描述】:
我有各种丰富的数据结构(主要是树),我想将它们保存到磁盘,这意味着我不仅想将它们写入磁盘,而且我想保证数据已经完全写入并且能够在掉电。
其他人似乎设计了将平面数据库表中的丰富数据结构编码为从父节点到子节点的查找表的方法。这有助于对数据运行 SQL 查询,但我不需要这样做:我只想保存和加载我的树。
显而易见的解决方案是将所有内容作为 blob 存储在数据库中:单个条目可能包含一个长字符串。这是对数据库的滥用还是推荐的做法?另一种解决方案可能是使用 XML 数据库?有没有我应该考虑的数据库替代品?
最后,我是从 F# 执行此操作的,因此从 .NET 持久化数据的交钥匙解决方案将是理想的...
编辑:请注意,格式(例如序列化)是无关紧要的,因为我可以使用 F# 在格式之间进行简单的转换。这是关于确认写入已完成,一直到非易失性存储(即磁盘盘片),并且写入数据的任何部分都没有仍然保存在易失性存储(例如 RAM 缓存)中,以便我可以继续安全地了解这些知识(例如,通过从磁盘中删除旧版本的数据)。
【问题讨论】:
-
重新“交钥匙解决方案” - 一些(不是全部)F# 构造可能超出了许多持久层所期望的 典型 窗口 - 将使用 DTO 类层(就在之前到序列化)如果它简化了事情是否可以接受?另外 - 我怀疑您可能想分别查看 serialization 和 ACID 方面。
-
如果(查看您对 Reed 的评论)序列化方面不是问题,那么可能是任何 ACID document 数据库。
-
@Marc:“ACID 文档数据库”。太棒了,谢谢!
-
随机建议; Raven DB 可能值得一看
标签: c# .net database f# persistence