Database design 平面文件数据库示例

Database design 平面文件数据库示例,database-design,data-access-layer,flat-file,Database Design,Data Access Layer,Flat File,我想看一些简单平面文件数据库的示例,以及如何通过数据层访问它们。我以前写过平面文件,也读过平面文件,但我从未创建过使用文本文件访问应用程序数据的数据层 如果可能的话,很高兴看到一个教程,它有一个数据层,利用一个简单的,自定义平面文件数据库。举一个例子,将自定义业务对象保存在XML中,然后将其上载,这将是一个很好的例子,因为XML非常流行并且易于使用 我也将非常感谢与讨论平面文件数据库设计等最佳实践的网站的任何链接 我的目标是提供一种解决方案,用于在用户的机器上存储简单数据,并且使他们不需要安装任

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

如果可能的话,很高兴看到一个教程,它有一个数据层,利用一个简单的,自定义平面文件数据库。举一个例子,将自定义业务对象保存在XML中,然后将其上载,这将是一个很好的例子,因为XML非常流行并且易于使用

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

我的目标是提供一种解决方案,用于在用户的机器上存储简单数据,并且使他们不需要安装任何特殊软件(如SQL Server等)来从存储数据的位置获取数据

我知道这是一个非常普遍的问题,但任何能为我指明正确方向的建议都是受欢迎的。

文本格式,如,可以用于存储结构化数据,但IMO作为数据库使用既不灵活也不高效


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

你也可以吃蛋糕:

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


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

有几个嵌入式数据库,你的用户根本不用担心

SQLLite是常见的、流行的、跨平台的等等,这取决于您的实现语言。如果您使用Java,有几种,例如Derby。NET不是我的拿手好戏,但我想那里有些东西。至少,MS有一个可自由使用的桌面、可嵌入的SQL引擎供您使用


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

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

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


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

我同意许多评论,认为最好使用现有的数据库引擎。然而,为了实际回答这个问题:

  • Xbase是一种非常常见的平面文件数据库格式(文件扩展名通常为.dbf)。你可以在谷歌上搜索“xbase”和“dbf”,找到大量信息和任意数量的驱动程序。如果你真的感兴趣的话,你应该能够提取很多提示和技巧
  • 如果您想在您的系统上使用一个非常可能的驱动程序,可以使用ODBC“Microsoft文本驱动程序”。如果您的机器上有任何Microsoft data access的东西,那么您很可能有该驱动程序。我不确定,但它可能安装了MDAC。该驱动程序将读取和写入逗号分隔的文本文件(以及其他格式)
由于今天有大量类似的技术,您的定义可能有点混淆,可以理解

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

与其他人一样,我可以强烈推荐SQLite用于此目的。有各种平台的绑定,.NET在一个文件中同时具有数据库提供程序和引擎

使用SQLite的两大好处是,实际数据库完全包含在由应用程序控制的单个文件中,并且它支持标准的SQL DDL和DML命令(即选择、插入、更新、删除、创建数据库/表等)

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

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

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


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

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

您使用的是什么平台/编程语言?在PHP中,我为一个Flatfile数据库构建了一个,它具有许多大多数软件包没有的功能。我目前正在维护它以及更改格式的能力,所以JSON/XML/YAML等(刚刚实现了一个老问题,但如果其他人也在寻找相同的问题,我会提供这个。我确实计划提供一些如何使用平面文件数据库的实际示例)有针对.NET和Java的SQLite绑定