Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 什么是用于很少更改数据的高效数据库管理系统?_Mysql_Sql_Sqlite_Immutability_Database - Fatal编程技术网

Mysql 什么是用于很少更改数据的高效数据库管理系统?

Mysql 什么是用于很少更改数据的高效数据库管理系统?,mysql,sql,sqlite,immutability,database,Mysql,Sql,Sqlite,Immutability,Database,我正在寻找一个高效的关系数据库管理系统,该系统针对很少更改的数据进行了优化(很少到每次更改都需要重新创建整个数据库的程度是可以接受的)。例如,我不需要事务、用户帐户、触发器或任何其他奇特的功能;但我确实需要外键、连接和存储大量数据的能力(尽管不是很“大数据”) 我所熟悉的两个DBMS是MySQL和SQLite: MySQL的开销似乎太大了 SQLite似乎无法很好地扩展大量数据 考虑到您只需要很少或根本不需要更新,我想至少有两个功能您可以利用 有些非标准化 对于更改数据库来说,数据的非规范化可

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

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

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

考虑到您只需要很少或根本不需要更新,我想至少有两个功能您可以利用

有些非标准化

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

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

高索引

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


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


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

我认为没有任何完整的RDBMS专门用于只读。也许更重要的是问如何设计一个只读优化的模式和索引。我不确定问题在哪里。。simple不使用不需要的功能,创建正确的规范化/索引模式,即(在给定的上下文中,这是无法回答的)。。然后信任查询计划器和缓存。当然,也许SQL/Relabor数据库是不合适的。考虑一下。基本上有查询缓存的任何东西,即:MySQL。@ MaTt为什么不使用特征“创建(相关)开销”?该问题在编写时似乎不是问题(例如,实际问题未明确定义,也未测试任何问题)。此外,想象中的“间接费用”也没有严格的保证,“有些非标准化”。过多的去规范化实际上是有害的——即使不需要“额外的连接”。我总是从“完全”规范化开始;但与索引建议一样,这个问题过于模糊/不完整,无法提供更多模糊的“建议”。一旦选择了一个数据库,就要根据预期的使用情况对其进行调优。@Matt是的,我意识到——出于完整性考虑,我仍然认为值得一提。那么你确定你将被安全地限制在一台服务器上?即使您最终只跨两台服务器,它们也会带来一些好处。