Oxe*_*rik 25 architecture database-design trello
Trello显示了自董事会成立以来任何用户所做的所有事情的历史记录.同样,如果您点击特定的卡片,它会显示任何人与该卡片相关的任何事件的历史记录.
跟踪无限期保留的每个更改/添加/删除必须收集大量数据,并且还可能在写入历史跟踪日志时遇到瓶颈(假设它立即写入各种数据存储).我的意思是,它们并不是将所有内容存储在分布在1000个服务器上的日志文件中,只有当它们需要查找时才收集和解析 - 它们始终显示所有这些信息.
我知道这不是提供这样的服务的唯一服务,但是你将如何构建这样的系统呢?
Bre*_*ett 33
我是Trello团队的成员.我们在MongoDB实例中使用Actions集合,在其引用的模型的ID上有一个复合索引(Card是模型,因此是成员)以及执行操作的日期.没有花哨的缓存或任何东西,除非索引和最近使用的文档由DB保存在内存中.行动是迄今为止我们最大的收藏.
值得一提的是,显示动作所需的大多数数据都存储在动作文档中非规范化,因此可以大大加快速度.