发布网友 发布时间:2022-04-21 16:22
共1个回答
热心网友 时间:2023-07-14 17:38
如何选择数据库
一般来讲,数据分析的查询不会直接从生产环境的数据库来读取数据,一方面是影响线上性能,另一方面是OLTP的表结构设计更多的是面向插入,而不是读取。如何来选择合适的数据库做数据分析呢?本文给出了四方面的考量,抛砖引玉。
1. 客户要分析什么样的数据
2. 客户分析的数据量是多少
3. 客户工程师团队技术背景,运维能力
4. 预期的数据分析的响应时间
客户要分析什么样的数据
上文已简单介绍了关系型数据库和非关系型数据库的区别,这里就不再赘述。下图是一个简单的分类。
客户分析的数据量是多少
用户需要分析的数据量越大,就越应该考虑非关系型数据库。
上图给出了选择合适数据库的思路。不同的数据库处理数据的能力不同。如果你打算处理1T以下的数据,那么可以使用Postgres或者MySQL,但如果数据量增大到5T以上,需要在扩展性方面下些功夫。当然,各个数据库厂商也在不断的优化性能,像微策略这样的BI平台也在紧跟各个厂商的步伐,对各个数据库的特性进行深入的研究,把数据库新特性运用到BI产品中,给客户深入分析各个数据库的优势劣势, 确保为客户提供最大的投入产出比。
客户工程师团队技术背景,运维能力
客户需要了解自己技术团队的人员结构、技术偏好。如果有强大的技术团队,关系型和非关系型数据库都可选择。一般来讲,非关系型数据库需要更多管理维护的时间。如果没有足够的运维人员,可以选择像Postgres, Google SQL (a hosted MySQL option) 或者 Segment Warehouses (a hosted Redshift) 这样的数据库,要优于Redshift, Aurora or BigQuery等。如果运维人员充足,可以选择Redshift等,为以后强大的扩展性做好准备。从另一个角度来说,分析半结构化数据是也是比较普遍的需求。这样就对数据科学家的技能提出了更大的挑战。面向对象的编程背景,精通Python/R 等语言也是对客户工程师团队的重要考量。
预期的数据分析的响应时间
比如像欺诈检测、系统监控等实时数据分析需要的数据分析相应时间有严格的要求。其他的数据分析比如像电子商务网站的用户留存分析等,并没有实时响应的严格要求。客户需要结合自己的用户场景,来选择合适的数据仓库。如果绝大部分的分析是基于已有的数据,对数据的实时性没有特别高的要求,建议用户选择像Redshift or BigQuery这样的数据库,对数据的读取和合并做了大量的优化。如果客户对实时性要求非常高,可以考虑非结构化的数据库方向和内存数据库方向。
当然,选择用什么样的数据库做数据仓储,只是第一步。以实时分析为例,需要从数据仓库,数据湖,计算引擎等架构方面做出通盘的考虑。