中型用户内容网站的数据库类型和引擎

时间:2010-11-15 22:25:41

标签: mysql database

使用MySQL进行系统/用户数据的基本存储。我需要存储/搜索消息(添加网络邮件功能),并进行分析(从当前和历史数据中即时报告/图表,如此类型的数据服装)+这意味着我需要存储历史数据。

所以问题是:
1)我是否将MySQL用于所有内容或使用单独的数据库来存储消息,分析/历史数据/用户数据?网站上还有现场直播,我听说MySQL不是很好用。

2)对于使用MySQL的表,InnoDB是否足够好,还是需要更高级的引擎,如TukoDB?

对于消息传递,朋友提到使用非关系数据库而不是MySQL。但是如果我使用单独的数据库类型,那么就会让他们保持同步并且考虑到这是一个24-7用户内容站点,我不能停机。

- 网站是一个高流量的用户内容网站,大量的读/写,但没有钱,所以我需要更少依赖服务器/硬件和更多的数据库/软件让我漂浮,因此只对免费/开源数据库和数据库开放引擎。

3 个答案:

答案 0 :(得分:1)

在直接回答问题之前,我应该说你的担忧是不成熟的。在你有一个工作项目之前,很多假设是错误的。因此,不要设计完美的架构,只需使项目(非完美)和为变化做好准备

现在,回到问题。

  

对于朋友提到的消息   请改用非关系型数据库   MySQL但如果我分开使用   数据库类型然后添加int他   让他们保持同步的头痛   并且鉴于这是24-7用户内容   网站,我不能停机。

这是一个很好的建议。您不需要将它们保持同步,因为您将在不同的数据库中保留不同的数据。

  • SQL数据库 - 用于交易数据。
  • 文档数据库 - 用于历史和非结构化。
  

网站是一种流量高的用户内容   网站,大量读/写没有钱所以我需要少依赖   数据库/软件上的服务器/硬件以及更多信息让我无所事事   因此只对免费/开源有效   数据库和数据库引擎。

如果我们将查看CAP定理和您的要求,我们可以告诉您SQL数据库不适合您,因为您为了一致性而牺牲了分区容差或可用性(您似乎没有需要)。

根据您的描述,您最好使用支持最终一致性的数据库。 MongoDB是最受欢迎的文档数据库之一。

我听到Cassandra的好消息。它允许您在一致性,可用性和分区容差之间进行调整。

Redis可用于提供一致性和可用性的极高负载。

所以我建议:

  • 对需要高度一致性的关键数据使用SQL数据库(InnoDB足够好)。
  • 使用文档数据库获取更高流量的数据(MongoDB,CoachDB)。
  • 使用密钥/值(哈希)数据库获取极高流量数据(~Redis)。
  • 使用您最熟悉的数据库。

答案 1 :(得分:0)

我们在公司做的是:我们每天备份我们的数据,并从此备份计算统计数据。例如,它非常适合营销目的。所以,我们可以坚持使用InnoDB ......

目前,您不需要(太多)考虑当您拥有1000万用户时会发生什么。优先考虑的是获得一些东西! 所以带有InnoDB的MySQL就可以了。

当第一批用户到达时,您将看到需要改进的内容......

答案 2 :(得分:0)

http://dev.mysql.com/doc/refman/5.5/en/innodb-storage-engine.html

如果您阅读第一段,您会看到:

“InnoDB是MySQL的高可靠性和高性能存储引擎。从MySQL 5.5开始,它是默认的MySQL存储引擎.InnoDB的主要优势包括......

我还需要说更多吗?