2010-01-08 175 views
6

我希望看到一些简单的平面文件数据库以及它们如何通过数据层访问的示例。我之前写过一个平面文件并且从平面文件读取数据,但我从未创建过使用文本文件访问应用程序数据的数据层。平面文件数据库示例

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

我也将是讨论设计的平面文件数据库设计的最佳实践任何网站链接感激,等

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

我知道这是一个非常普遍的问题,但任何可以指引我朝着正确方向的建议都是值得欢迎的。

+0

您使用的是什么平台/编程语言? – AUSteve 2010-01-08 23:41:09

+0

我正在使用c#.net – 2010-01-10 19:03:48

+0

在PHP中,我为**平面文件数据库构建了一个https://github.com/tmarois/Filebase**有许多功能,大多数软件包都没有。我目前正在维护它,并有能力改变你的格式,所以JSON/XML/YAML等(只是意识到老问题,但我会提供这个,如果它的使用给其他人寻找相同的东西,我打算上来以及我如何使用平面文件数据库的一些真实生活实例) – timothymarois 2017-09-06 13:42:42

回答

4

由于今天大量的类似技术,您可能已经将自己的定义混淆了一些,可以理解。

XML不是flat file format(或平面文件数据库),但通过阅读您的目标,听起来像您真正想要的是一个自包含的关系数据库而不是实际的平面文件。

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

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

对于单用户应用程序SQLite是存储应用程序数据和设置的优秀方法之一。最近还有has been discsussion它甚至可以支持更小规模的多用户应用程序。

但是,如果您有权访问/使用数据库服务器,Oracle,MySQL,SQL Server等仍然是多用户应用程序(即使是小规模应用程序)的首选。

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

您可能拥有多用户应用程序,并且在多用户计算机上安装了丰富的客户端UI。这里的中央数据库应该是一个多用户数据库,比如MySQL。但是在富客户端UI中,SQLIte是存储每个用户设置的理想选择,或者可能在无法访问数据库时提供脱机支持。

0

CSV,INI,XML这样的文本格式可以用来存储结构化数据,但是IMO不灵活或者不能有效地用作数据库。

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

0

你可以有你的蛋糕,吃它太:

SQLite是由一个单一的文件,无需安装SQL数据库,它有许多语言绑定,并在不同的平台上运行。

如果您提到要在平面文件上编写自己的数据层,则无需这样做。事实上,除非你想学习锻炼,否则我会建议不要这样做。

0

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

SQLLite是常见的,流行的,跨平台等,取决于你的实现语言。如果您使用Java,则有几个Derby例如。 .NET不是我的笨蛋,但我想象那里有东西。 MS至少有一个可以自由使用的桌面,可以使用的嵌入式SQL引擎。

编写自己的脚本可能是一个有趣的练习,但该脚轮已经完成,使用现有数据库比从头开始更简单,更高效。您的用户完全不会受到影响,所以如果这是主要的驱动因素,那么没有理由不使用可用的产品/项目。

+0

有.NET和Java的SQLite绑定 – 2010-01-08 23:46:17

0

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

0

为什么不用简单的数据库引擎捆绑应用程序,而不是重新创建数据库?数据库有很多大小,并不都是巨大的:-)

如果你想重新发明轮子,看看简单的开源数据库引擎的源代码应该指向你正确的方向。

0

我同意许多意见,建议使用现有的数据库引擎更好。然而,试图回答这个问题:

  • 极其常见的平面文件数据库格式是Xbase(通常带有.dbf扩展名的文件)。你可以谷歌的“xbase”和“dbf”,并找到大量的信息和任何数量的驱动程序。如果你真的感兴趣,你应该能够提取相当多的提示和技巧。
  • 如果你想玩一个很有可能在你的系统上的游戏,你可以使用ODBC“Microsoft Text Driver”。如果您的计算机上有任何Microsoft数据访问内容,则可能有该驱动程序。我不确定,但可能安装了MDAC。该驱动程序将读取和写入逗号分隔的文本文件(以及其他格式)。
1

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