我希望将一些历史体育成绩整合到一个数据库中,以便在未来构建应用程序和可视化时查询它们。
我对这一领域的理解使我相信我可以采用非关系方法(如亚马逊的DynamoDB(,这样我就不必随着数据大小和查询的增长而考虑数据库资源、大小等。
然后,我计划使用AmazonLambda来处理数据导入和对传入查询的响应。
我的两个问题是:
- 这种方法有效吗
- 非关系模式会是什么样子
为了帮助解决第二个问题,如果这是一个关系数据库,那么表的样子应该是这样的。
- 事件
- 竞赛(存储结果和相关字段的位置(
- 运动员
- 团队
如果您的查询将有很多到这些表的联接,那么关系数据库将是首选。虽然可以使用DynamoDB,但加入这些表会很困难。DynamoDB的一个特性是索引,这可能会让开发人员感到困难。您必须使用哈希键进行搜索。所以你在选择索引时必须小心。
然而,如果数据就像查找一样,例如比赛ID 123,获胜者是运动员a。DynamoDB将蓬勃发展,因为使用它有好处(可扩展性、最低管理等(
就我个人而言,我不喜欢dynamoDB在列出一些东西时(使用搜索、分页等(。当然,你可以建立一个搜索索引,但对于更简单的应用程序,这将是一种过度的做法。
备选方案
如果您只对构建数据的可视化和聚合感兴趣,那么可以使用红移或S3来存储数据。稍后运行一些聚合函数。然后将聚合保存到dynamodb或rds中。
我认为dynamodb和RDS数据库只供最终用户查询和使用。