我已经被困在MsSql / MySql世界几年了,我决定再展开一些翅膀。目前我正在研究哪些DBMS擅长归档数据时需要的东西。例如。大量写入和低读取。
我见过NoSQL十字军,但我有一个非常RDBMS的心态,所以我有点怀疑。
有人有什么建议吗?甚至是指向这类东西的某些基准等的指针。
谢谢:) 托马斯
修改
既然有问题,我会尝试提供一些关于我在想什么的信息
我要在几台服务器上运行服务,这些服务器都有自己的本地数据库。这些数据库将有大量的命中(1/1读/写),所以我试图让它们尽可能为空以保持查询时间。我最初的估计是,该数据库中的行不会超过30分钟。在每个服务上运行归档数据库似乎是浪费资源,因此中央归档架构看起来更好。
我会试着建立一个快速的网络架构
___________ ___________ ___________ | service 1 | | service 2 | | service 3 | ----------- ----------- ----------- |____________|_______________| ____|____ | Archive | ---------
正如您可能知道的那样,MsSQL和MySQL在处理写入时只能垂直扩展(不确定它是否是rdbms)。所以我正在考虑尽可能地从该归档DBMS中获得最佳性能。
答案 0 :(得分:1)
如果您要归档的数据结构相对简单,您可以考虑直接归档到平面文件。写作好,不太适合阅读。在这个问题中对这个主题进行了一些讨论:Are flat file databases any good?
否则,我会坚持使用MySql并确保它已针对高写/低读取使用情况进行了适当调整。
答案 1 :(得分:1)
所以我试图让它们尽可能空,以便缩短查询时间
首先,除非您只进行全表扫描,否则查询速度与数据库大小不成正比。唯一索引查找与索引的深度成比例。从索引根块分割到下一次分割时,可能会有数百万个额外的行。事实上,删除行以使数据库“尽可能为空”可能实际上不会使数据库变小。在重建索引之前,您可能会有非常稀疏的分支和叶块,这使得索引扫描需要更长时间。
我不确定MSSQL或MYSQL如何填充部分空白页面,但您可能看不到删除所有空间节省。
在Oracle中,我建议分区并删除删除,以实际保持数据库的大小。
但是我说了所有这些以鼓励您展开使用内存数据库以供服务器使用,而不是专注于您的存档使用。在这种情况下,您没有说任何让我认为RDBMS不是归档的最佳解决方案。
答案 2 :(得分:0)
Oracle或PostGresSQL也是非常强大的DBMS。但如果你已经知道并使用了MySQL,为什么要改变呢? MySQL是免费的,高性能的,有良好的文档......
但是如果你大部分都有写操作而不是很多读操作,并且你不再需要常用的DBMS,那么你可能会考虑基于文档的DBMS
希望这有帮助!
答案 3 :(得分:0)
您可以使用此Database Benchmark Software (GNU GPL)查看不同数据库的读/写性能结果 这很适合找到答案。