1

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

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

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

我了解答案可能会因您在表/列中存储的数据量而异。但是请根据您的经验描述(什么样的桌面应用程序,写/读重,根据您的猜测会达到多长时间)。

4

4 回答 4

2

我的“当它达到 4GB 时会发生什么”的策略通常是“安装一个成熟的数据库”。

4 GB 是非常多的文本;对于单个开发人员的应用程序来说,它几乎是无限的。

假设文件系统中有 blob,将用户的图像限制为每个图像 100kb,每个用户一个配置文件图像,并且这些图像不超过数据库的四分之一;1 GB。那仍然是一万用户。

4GB 通常很多,除非你在做一些不寻常的事情。

于 2010-05-03T14:38:45.963 回答
2

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


编辑

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


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

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

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

于 2010-05-03T14:42:21.477 回答
1

“如果达到限制,下一步怎么办?”

这个数字:18446744073709551615。如果你没有得到它,那就是 16 艾字节(减一)。

于 2010-05-03T20:16:31.517 回答
1

如果达到限制,则使用没有该限制的 DBMS。另外,永远记住没有免费软件这样的东西。

于 2010-05-04T20:59:09.963 回答