database - 这些嵌入式/快速数据库的 4GB 限制是否足够好?如果达到限制,下一步是什么?

标签 database database-design desktop-application embedded-database

我想知道(理论上)桌面应用程序可以在多长时间内消耗这些快速/嵌入式数据库产品(SQL-Server Express、Oracle Express、SQLite3 等)的全部 4GB 限制,前提是大 blob 将存储在文件系统。

另外,当它达到 4GB 时,您的策略是什么?

  • 归档旧数据库
  • 将 1-3 个月的数据复制到新数据库(将此视为缓存策略?)
  • 从此时起开始使用新数据库(您如何访问旧数据?)

我知道答案可能会有所不同,具体取决于您在表/列中存储的数据量。但是请根据您的经验描述一下(什么样的桌面应用程序,写/读重,根据您的猜测会达到多长时间)。

最佳答案

除了建议升级到“真实”数据库外,真的没有办法回答这个问题。话虽这么说,如果单用户数据库达到 4GB 而没有保存大型 blob,那么您正在做一些不同寻常的事情。


编辑

许多人忽略的一件事是 RAM 和 CPU 对 SQL Server Express 版本的限制。虽然 2008 年及之前的数据库大小限制为 4GB(2008 R2 为 10GB,如对此问题的评论中所指出),但您更有可能受到 1GB RAM 和单 CPU 限制的负面影响,尤其是 有这么大的数据集。


归档(几乎)从来都不是一个简单的解决方案,因为这通常涉及破坏现有关系或复制数据。例如,假设我有一个包含 CustomerOrder 的数据库。

                Order
Customer        ----------
---------       OrderID
CustomerID <--- CustomerID
...             ...

这里的自然选择是在两个 CustomerID 列之间创建一个外部 hey,使其在 Order 表中不可为 null。但是当我想归档订单时会发生什么?要么我必须打破存档数据库中的关系(允许它链接到存档数据库中不存在的 CustomerID),要么我必须复制数据(存档链接的 客户 记录,同时仍将其保存在实时数据库中)。从维护的角度来看,这两种选择都不是特别理想。

关于database - 这些嵌入式/快速数据库的 4GB 限制是否足够好?如果达到限制,下一步是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2758768/

相关文章:

algorithm - 关系数据库中的时间表建模

windows - Neo.ClientError.Procedure.ProcedureNotFound Neo4j Windows 桌面版

database - 在某些情况下,将冗余数据存储在数据库中以提高速度是否有意义?

sql - 如何找到数据库时间重叠

sql - 如何使用SQLite数据库设计“上周播放次数最多”排名?

mysql - 如何为标签云设计 MySql 表?

c++ - 突然间,我的 Qt 应用程序显示为 100%,而不是正常的 200%,我做了什么更改导致它失去了该功能?

java - 构建具有安全性的 Java 桌面应用程序的最佳方式

java - 无法从java应用程序访问mysql数据库

sql - 返回统计信息而不是点击的关键字搜索引擎