什么是有效的数据库管理系统,很少改变数据?

时间:2013-09-20 22:59:41

标签: mysql sql sqlite immutability database

我正在寻找一种高效的关系数据库管理系统,该系统针对很少变化的数据进行了优化(很少甚至不得不在每次更改时重新创建整个数据库)。例如,我需要交易,用户帐户,触发器或任何其他奇特的功能;但我需要外键,连接和存储大量数据的能力(虽然不是“大数据”)。

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

  • MySQL似乎过于开销。
  • 对于大量数据,SQLite似乎不会扩展得太好。

1 个答案:

答案 0 :(得分:2)

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

稍微不正常化

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

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

高度索引

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


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

大数据解决方案(Hadoop,MongoDB)可能值得考虑,因为它们可能有助于多服务器扩展。这就是他们的设计目标,而且他们的一些缺点(特别是缺乏加入能力)将会因此而减轻。