7

我想看看一些简单的平面文件数据库的例子,以及如何通过数据层访问它们。我以前写过和读过一个平面文件,但我从来没有创建过一个数据层来访问使用文本文件的应用程序的数据。

如果可能的话,很高兴看到有一个数据层使用简单的自定义平面文件数据库的教程。以 XML 格式保存自定义业务对象然后上传它们的示例会很好,因为 XML 非常流行且易于使用。

我也将感谢任何链接到讨论有关平面文件数据库设计等的最佳实践的网站。

我的目标是在用户机器上存储简单数据的解决方案,让他们不需要安装任何特殊软件(如 SQL Server 等)即可从存储位置获取数据。

我知道这是一个非常笼统的问题,但欢迎任何可以为我指明正确方向的建议。

4

8 回答 8

4

由于当今有大量类似的技术,您可能有些混淆了您的定义,这是可以理解的。

XML 不是平面文件格式(或平面文件数据库),但从阅读您的目标来看,您真正想要的是一个自包含的关系数据库,而不是一个实际的平面文件。

像其他人一样,我强烈推荐 SQLite 用于此目的。有各种平台的绑定,.NET 有System.Data.SQLite,它在一个文件中既是数据库提供者又是引擎。

使用 SQLite 的两大好处是,实际数据库完全独立于由应用程序控制的单个文件中,并且它支持标准 SQL DDL 和 DML 命令(即 SELECT、INSERT、UPDATE、DELETE、CREATE DATABASE/TABLE 等)。

对于单用户应用程序,SQLite 是存储应用程序数据和设置的一种极好的(最好的)方式。最近有人讨论它甚至可以支持更小规模的多用户应用程序。

但是,如果您有能力访问/使用数据库服务器,那么 Oracle、MySQL、SQL Server 等仍然绝对是多用户应用程序(甚至是小型应用程序)的首选。

另外,不要忘记数据库的选择不是相互排斥的。

您可能在许多用户的计算机上安装了带有富客户端 UI 的多用户应用程序。这里的中央数据库实际上应该是一个多用户数据库,例如 MySQL。但在富客户端 UI 中,SQLIte 非常适合存储每个用户的设置,或者在无法访问数据库时提供离线支持。

于 2010-01-09T00:42:24.993 回答
2

biggy是我过去使用过的。它以 JSON 格式保存在平面文件中,您可以在 Github 上找到它

于 2014-09-04T13:20:24.880 回答
0

CSVINIXML等文本格式可用于存储结构化数据,但 IMO 不能灵活或高效地用作数据库。

我推荐SQLite作为一个很好的选择。它是一个非常强大、轻量级和独立的数据库引擎。

于 2010-01-08T23:42:26.327 回答
0

你可以吃蛋糕也可以吃:

SQLite是一个由单个文件组成且无需安装的 SQL 数据库,它具有多种语言的绑定并在各种平台上运行。

在您提到的情况下,无需在平面文件之上编写自己的数据层。事实上,除非你想要学习练习,否则我建议不要这样做。

于 2010-01-08T23:43:45.793 回答
0

有几个可用的嵌入式数据库,您的用户根本不必担心。

SQLLite 是通用的、流行的、跨平台的等等。取决于你的实现语言。如果您使用 Java,则有多种,例如 Derby。.NET 不是我的 ballywick,但我想那里有一些东西。至少,MS 有一个可免费使用的桌面,您可以使用可嵌入的 SQL 引擎。

自己编写可能是一个有趣的练习,但是这个轮子已经完成了,使用现有数据库比从头开始更容易和更有效。您的用户根本不会受到此影响,因此,如果这是主要驱动因素,则没有理由不使用可用的产品/项目。

于 2010-01-08T23:44:00.520 回答
0

Perl 中有DBD::CSV模块,可以加载 csv 文件并使用 SQL 语句查询它们。但是为了您的目标,我认为您最好调查一下SQLite,它是一个在没有服务器的情况下运行的适当关系数据库。

于 2010-01-08T23:44:00.660 回答
0

与其重新发明数据库,不如将您的应用程序与一个简单的数据库引擎捆绑在一起?数据库有多种大小,并非都很大:-)

如果您确实想重新发明轮子,那么查看简单的开源数据库引擎的源代码应该会为您指明正确的方向。

于 2010-01-08T23:45:05.027 回答
0

我同意许多建议最好使用现有数据库引擎的评论。但是,作为实际回答问题的尝试:

  • 一种极其常见的平面文件数据库格式是 Xbase(通常带有 .dbf 扩展名的文件)。你可以用谷歌搜索“xbase”和“dbf”并找到很多信息和任意数量的驱动程序。如果您真的感兴趣,您应该能够提取相当多的提示和技巧。
  • 如果您想使用系统上很可能出现的一个,您可以使用 ODBC“Microsoft Text Driver”。如果您的机器上有任何 Microsoft 数据访问功能,那么您可能拥有该驱动程序。我不确定,但它可能与 MDAC 一起安装。该驱动程序将读取和写入逗号分隔的文本文件(以及其他格式)。
于 2010-01-09T00:14:28.753 回答