-3

我正在寻找一种高效的关系数据库管理系统,该系统针对很少更改的数据进行了优化(很少,即使每次更改都必须重新创建整个数据库也是可以接受的)。例如,我不需要事务、用户帐户、触发器或任何其他花哨的功能;但我确实需要外键、连接和存储大量数据的能力(虽然不是“大数据”)。

我熟悉的仅有的两个 DBMS 是 MySQL 和 SQLite:

  • MySQL 的开销似乎太大了。
  • 对于大量数据,SQLite 似乎无法很好地扩展。
4

1 回答 1

2

鉴于您需要很少或不需要更新,我可以想到至少两个您可以利用的功能。

有点去规范化

非规范化数据可能会给更改数据库带来问题,因为它会迫使您对所有冗余进行多次更新。由于在这种情况下这不是问题,因此您可以自由地对某些表进行反规范化以方便查询。也就是说,您需要的更多数据可以在更少的表中——因此更少的连接,更快的查询。

例如,一个完全规范化的数据库可能有一个“users”表和一个“locations”表,其中“users”包含一个“location_id”外键。您可能决定去规范化并删除“位置”表,将其所有列移动到“用户”表中。这样,任何针对用户 + 位置的查询都不需要执行连接。

高度索引

对您期望的查询进行编目,并设计索引(和/或索引视图)以确保在所有情况下都能快速查找。通常你在这方面是有限的,因为更多的索引意味着更慢的插入——但摆脱了这一点,你可以索引到你内心的内容。当然,索引会占用磁盘空间,因此您仍然需要考虑这一点,但对于中型数据库,空间问题通常比速度问题要小。


就 RDBMS 而言,我认为这并不重要(至少从优化只读数据库的角度来看——当然还有其他重要因素,如许可成本)。如果您需要扩展到一台服务器之外,任何传统的关系数据库(MySQL、SQL Server)都会迫使您进行水平分区。

大数据解决方案(Hadoop、MongoDB)可能值得考虑,因为它们可以促进多服务器扩展。这就是它们的设计目的,它们的一些缺点(尤其是缺乏加入的能力)将针对您的情况得到缓解。

于 2013-09-20T23:13:18.760 回答