【发布时间】:2016-07-05 16:51:58
【问题描述】:
我正在构建一个云同步应用程序,它可以跨多个设备同步用户数据。我正处于十字路口,正在决定是将数据作为文件存储在服务器上,还是存储在关系数据库中。我正在使用 Amazon Web Services,如果我选择将数据存储在表中,我会将 S3 用于用户文件或其数据库服务。我存储的数据是每十秒钟应用程序的状态。存储在数据库中可能会有问题,因为每个用户要存储的平均行数是 100,000 行,而我当前的用户群为 20,000 人,即刻有 20 亿行。将这些信息存储在文件中会更好吗?因为这将是大约 100 个文件,每个用户总共 6 兆字节。
【问题讨论】:
-
您能否详细说明“我存储的数据是应用程序的状态”是什么意思?是否可以将这些数据规范化为列以使其对关系数据库更敏感?你能不能区分自上次更新以来所做的更改并存储这些更改而不是完全转储所有内容?
-
@MarcFowler 这是一个专业应用程序,每 10 秒从外部机器获取各种数据(氧气水平,氮气水平),因此它确实需要以这种方式构建。是的,我只会同步更改,但不是有 20 亿行来查询该用户的特定行吗?
-
考虑同时使用。适合它的数据库,适合它的操作系统。因此,通常情况下,这意味着非 blob 存储,即两者的融合
-
当您谈论键/值存储时,数据库和文件之间的界限可能有点模糊,S3 在技术上就是这样做的。大多数系统最终都是 S3 和某种数据库(如 RDS)的混合体。找出这些工具和架构师能最好地解决哪个问题。