假设有一个消息传递系统。该系统有数百万个条目要发送并报告,计数每小时增加100K。 2个服务访问db,一个是发送者,一个是记者。那么为了获得最佳性能,您会建议什么?如何设计数据库?
你会在mysql,postgresql,mongodb等中建议使用哪种开源RDBMS来填充这个高容量数据库?
谢谢
答案 0 :(得分:1)
除了一些关于预期数据量的评论之外,您还没有真正提供有关您的要求的更多信息。简单存储大量数据没有真正的内在价值,它能够访问提供真正价值的数据;因此,了解您希望如何从数据库中检索信息比您想要存储的数据更重要。
这些消息是否真的需要像MongDB这样的文档数据库,或者它们的结构是否足以使用像Postgresql或MySQL这样的直接RDBMS。您需要全文搜索功能吗?对此消息数据执行的频率和查询类型是多少?你想写自己的推特吗?
如果这些是您当前的数据卷,请使用db replication for resilience。考虑对消息表进行分区,可能是按发布日期。像Konerak建议的那样使用主/从(甚至多主/多从)。查看较旧消息的归档表的可能性,这些消息不太可能被查询,但仍然可用。看看像Oracle这样的商业数据库可以为您提供什么。找专业人士帮助调整数据库的性能,而不是简单地在SO等网站上寻求免费建议。
考虑您的硬件......多个负载均衡的服务器来帮助处理卷(我们有14个专用服务器,仅用于接受新消息,以及三个高性能服务器,用于查询数据)。