mysql - 高可用讨论db模型-mysql

标签 mysql scalability high-availability

您能分享一下您对可扩展性的见解吗?

假设我有一个简单的以下 MySQL/RDBMS 数据库,用于树状讨论:

表格:

  • 讨论(id、url)
  • 评论(id、discussionId、parentCommentId、slug)
  • comment_vote(讨论 ID、评论 ID、用户 ID、值)

这个想法是对该 RDBMS 结构执行频率较低的写入(与更频繁的读取相反),并在写入后重建缓存以将整个讨论写入某些读取缓存(可能是文档数据库),其中存储了可以提供服务的格式无需对客户端进行进一步处理。

  • 假设每天有 250MB 的新数据或每分钟 1000 个请求(90% 是读取)。
  • 在 comment_vote 中,我们应该以某种方式确保对于特定评论,每个用户最多有 1 票。
  • 数据库使用discussionId键进行分片,并且我们拥有具有任意数量节点的数据库集群

1./这种布局实际上能走多远?我的意思是,我们这里只有 3 张 table 。有没有明显的瓶颈?就像重建索引,一些表级锁定,...在表中的每次插入上,应该有数百千兆位甚至更多?

2./使用文档数据库进行写入会更合理吗,因为例如他们可以更好地处理较小零件的物理锁定吗?

3./还有其他想法/更好的解决方案吗?

非常感谢。

最佳答案

嗯,管理高负载是一项非常全面的任务,所以你可以在 https://dba.stackexchange.com/ 上碰碰运气。例如

初步想法

  1. 您可以尝试使用 PostgreSQL 作为 MySQL 的更强大替代品
  2. 对于类似论坛的记录,根据评论/讨论的日期值构建分区可能是一个很好的解决方案。因此,您需要添加日期字段 - 例如上次更新、上次读取等。这些值还将帮助您从逻辑上决定是否需要存档
  3. 如果需要实现快速全文搜索MySQL并不是最好的方法

关于mysql - 高可用讨论db模型-mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52636577/

相关文章:

hadoop - Spark 作业出错,出现 : Too many elements to create a power set 34

cluster-computing - CoreOS 中的共享 IP

selenium - Selenium 集线器的冗余

Mysql更新日期相对于特定列的更新

mysql - Sql:如何在sql表中添加多个条目

wcf - WCF将如何扩展到大量客户端用户?

python - 根据值有效地跟踪字典的前 k 个键

linux - keepalived 无法在 bond(m=1) 接口(interface)上接收多播数据包,但 tcpdump 可以导致 keepalived 都进入 master

mysql - 如何实现3+条记录之间的交叉引用?

mysql - 配置 JDBC Glassfish