【问题标题】:3D+ embedded spatial database option3D+ 嵌入式空间数据库选项
【发布时间】:2012-01-26 05:01:43
【问题描述】:

我们正在开发一个应用程序,该应用程序必须在边界框中查询 3D 形状(以及基于其他参数的查询)。形状的数量超过了我想保存在内存中的数量,所以我需要一个数据库来处理它。

具体来说,我们的主要操作是插入和查询。我们从不修改现有数据。

因为它是一个桌面应用程序,我试图避免 PostgreSQL 和 MySQL 分离服务器类型的东西,希望部署更简单。我找到了 Spatialite,但它没有在第三维索引,所以它不起作用。

我尝试搜索 kd-tree 数据库,但还没有找到任何东西。我知道有 kd-tree 实现,但是要以数据库形式实现它需要付出很多努力才能推出我们自己的,所以我正在尝试看看是否已经存在一些东西。

应用程序在 Haskell 中,但如果我们必须与其他语言集成,我们可能会处理它。

【问题讨论】:

  • 这可能是相关的:sqlite.org/rtree.html
  • @notfed 请将其发布为答案,因为它肯定是一个合理的解决方案。

标签: database 3d spatial shapes


【解决方案1】:

SQLite R*Trees

给定一个查询矩形,R-Tree 能够快速找到包含在查询矩形内或与查询矩形重叠的所有条目。这个想法很容易扩展到三个维度以用于 CAD 系统。

【讨论】:

  • 插入速度为每秒数千。查询速度取决于结果的数量——很少有结果非常快,几毫秒,但 100,000 个结果需要 100 毫秒。但我意识到我们的查询要求是不切实际的。想要每秒 10,000 次不会以天真的方式发生。所以......毕竟我们可能不得不为此做一些特别的事情。
【解决方案2】:

我会恭敬地挑战您避免使用 PostgreSQL/MySQL 的尝试。我在 PostgreSQL 方面经验丰富,它可以完成您想要的工作,而且管理起来并不困难。当然,你发现的任何其他东西都不会达到 PostgreSQL 的开发和测试水平——那何必呢?

【讨论】:

  • 作为一个简单的非技术用户,如果您安装了一个绘图应用程序,您是否需要在后台管理一个 postgresql 数据库?我们有一个非常集中的要求,实际上任何 SQL RDBMS 都是多余的,但我正在看看我们是否可以使用现有的东西来避免编写所有磁盘级管理和缓存代码,因为它已经在现有数据库中多次编写。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
相关资源
最近更新 更多