基于大型记录的数学数据库的平台是什么?

use*_*109 11 windows database-recommendation record

嗨,我是一名土木工程师,有一些编程经验,但我不熟悉当今可用的大量选项。希望你能给我任何指示最好的方法。

我想以网格格式制作和查询地面测量数据的数据库。在土方作业的不同时间,每个网格位置都会有许多测量值,因此存在时间的第 4 维。

观察结果很可能是从文本文件中读入的。在每条记录中都会有一个(2 x 整数)网格位置(行和列)一个(浮点)地平面和各种字符串信息代码(总共可能多达 30 个字符)。

网格可以是大约 10000 行 x 10000 列。并非网格上的每个位置在每次调查中都有记录,但通常最多有一百条记录。许多网格位置根本没有记录(该站点不会是完美的矩形)。

我想搜索记录、提取数据并进行计算,例如计算每个网格位置的最低或最高地平面。我相当有信心,我有能力用诸如 FORTRAN、BASIC 或 C 之类的语言使用数组相当简单地进行编程。虽然很多数组元素都是空的,但我猜这不是正确的方法,像这样的大型数据库需要特殊的工具,我必须学习如何使用。

我正在考虑平台的可能选项 -

  1. 使用数据库程序。我不熟悉这些功能有多强大,但我想它们会在 GUI 上产生很多开销。

  2. 使用 SQL?这我不太了解,但它似乎是数据库的语言。我一直使用命令式语言而不是声明式语言,正如我从维基百科了解到 SQL 是声明式的,我对这种变化有点紧张。我不完全了解使用它的过程。是否有制作控制台程序的编译器?数据库是否存储在磁盘上?抱歉问了这么愚蠢的问题。

  3. 使用像 c-treeACE 这样的 API?我认为这可能是让我熟悉“​​做这个,然后做那个”语言的方式(不幸的是,这就是我作为工程师的想法!)。但我希望 API 提供的幕后内存和处理管理将优于我使用大型数组所能实现的。

  4. 或者我可以用面向对象的语言来做,让计算机担心存储要求。例如,如果我将记录存储为具有方法和属性的对象,这些方法和属性可以帮助我从每条记录中获得我需要的结果 - 与 3 相比,它会是一个巨大的臃肿程序吗?

可能有数亿条记录,我希望能够在运行 Windows 的现代 PC 上在几分钟而不是几小时(最好是几秒钟!)内查询和处理它们。更具体地说,我的是带有 6Gb ram 和 120Gb SSD 的 i7 处理器,运行 Windows 7 64 位。

希望有人有时间与新手分享几句智慧之词。

Chr*_*ers 9

有多种选择,请不要局限于我在这里的回答。特别是,您可能会发现数组原生数据库会有所帮助。我的回答将专门针对您关于基于 SQL 的数据库的问题。

在我看来,这是一个地理空间信息问题。基于 SQL 的数据库实际上在这些领域中使用得很好,但这也是数据库中的一个专业领域。

在该领域的 SQL 数据库中,带有 PostGIS 附加组件的 PostgreSQL 被认为是最好的数据库之一。如果我是你,这就是我开始的地方。SQL 的主要优点是它在将数据重用于您尚未想到的用途方面保留了灵活性。在良好的地理空间支持下执行此操作意味着您可以计算大范围内的距离,而无需担心球面三角的细节。

当然,这只会成为非常大网格的一个因素。对于可以忽略地球曲率的较小网格,PostgreSQL 还提供了一系列几何类型,包括可以使用的坐标系上的点。我提到这一点是因为目前尚不清楚正在调查的区域有多大以及是否可以假设平面几何。

即便如此,PostGIS 仍然可以通过允许在 3 维和 4 维几何坐标系上进行表示和计算来简化事情。

另请注意,您说您的网站不一定是方形的。在 PostgreSQL 中,您可以做的一件事(使用几何类型或 PostGIS)是为每个站点定义一个非矩形边界,以便您可以在保存测量值之前检查以确保某个点位于站点边界内。

声明性语言的影响

我认为这种担忧是多余的。人们可以并且确实编写 SQL 查询,就好像它们是他们从中调用它们的程序的命令式语言的一部分一样。对于您的大多数查询,这无关紧要。

人们所说的声明性语言是指在查询中,结构告诉数据库您想要什么信息,而不是如何获取它。当您想从数据库中获取复杂信息时,这一点很重要,因为基本上这意味着如果您能提出正确的问题(并且您的数据有效),您将得到正确的答案。

然而,最大的不同是长 SQL 查询比长命令式子例程更容易调试,因为可以更快地缩小查询中发生故障的位置。

这将如何运作

如果你走这条路,很有可能你会有一个数据库和一个用你选择的语言编写的程序。该程序将向数据库发送查询并返回答案。您还可以(在 PostgreSQL 和许多其他关系数据库中)将您的查询放在函数中,然后应用程序可以调用这些函数,从而提供更多命令式或函数式接口。数据将存储在磁盘上,并通过与您的程序不同的软件进行访问。您还可以连接另一个程序(从 MS Access 到 pgAdmin)并运行查询或生成报告。

从本质上讲,您可以将 RDBMS 视为管理数据的“数学引擎”,并且您的程序与其交互以执行您需要的操作。