c# - 磁盘数据库存储,最佳实践

标签 c# storage local disk

如果这个问题对您来说很常见,我很抱歉,我快速搜索了这个网站并进行了一些谷歌搜索,但找不到令人满意的答案。

我的问题是这样的;

我现在只做了 3-4 年的软件开发人员。这段时间似乎足以让我自己回答这个问题,但在我所有的时间里,我从来没有开发过不需要将数据存储主体放在在线数据库中的软件。然而这一次,我的最新开发只需要将其数据存储到磁盘。

实际数据本身是轻量级的。在代码中,主要 Assets 将是一个只有少数必须保留的基于字符串的属性的类。我最初的想法是简单的序列化。在应用程序关闭时,新 Assets 被简单地序列化并作为文件存储在磁盘上。我也虽然可能出于备份目的(或者如果它是序列化类的更好选择)一个 XML 文件是合适的。

我想不出这两种方法有什么明显的缺点,正是这个事实促使我公开提出这个问题。根据我的经验,很少有解决问题的方法没有缺点。

最佳答案

序列化(二进制或 XML)适用于少量数据。这种方法的问题是当您获得大量数据(您可能需要查询)时。

如果您在Windows 平台上并且需要合适的数据库,您可以使用Windows 自带的嵌入式数据库引擎- ESENT .它是 Exchange 和 RavenDB 的后备存储.

Here是它的 .NET 包装器库。

ManagedEsent provides managed access to ESENT, the embeddable database engine native to Windows. ManagedEsent uses the esent.dll that is part of Microsoft Windows so there are no extra unmanaged binaries to download and install.

关于c# - 磁盘数据库存储,最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3377379/

相关文章:

filesystems - POSIX 存储和 NFS 有什么区别?

javascript - 是否可以跨浏览器将文件另存为按钮?

bash - 在 bash 中将变量作为本地变量

perl - "Turn Off"binmode(STDOUT, ":utf8") 本地

c# - 在 XNA 中统一调整窗口大小

c# - 在 C# 中读取 COBOL COMP 数据

c# - 将 ATL::CComBSTR 转换为 BSTR*

c# - x86 与 x64 上的 Mod (%) 运算符

Android/iOS 持久数据存储

android - Android本地开发如何指定?