我应该使用数据仓库还是数据库或其他东西?
Posted
技术标签:
【中文标题】我应该使用数据仓库还是数据库或其他东西?【英文标题】:Should I use Data Warehouse or database or something else? 【发布时间】:2021-02-22 08:52:05 【问题描述】:在当前项目中,我们有一个带有分析模块的 webapp。用户选择一些过滤器并根据这些过滤器显示表格或图表。我们希望模块具有响应性,因此当用户选择过滤器时,它可以在几秒钟内获取数据。
用户过滤器正在查询一个大约 1,000,000,000 行和 20 列的大表(在几年内它应该以每年 2 倍的速度增长)。 20 个柱子中有 18 个是可过滤的。大多数情况下会有 SELECT + WHERE 查询。
我们不确定,我们应该使用数据仓库还是经典数据库。 目前的研究建议我们应该在 Clickhouse、DynamoDB、Snowflake、BigQuery 或 Redshift 之间进行讨论。有没有人有类似的用例,您会推荐哪种数据库解决方案?
【问题讨论】:
这些用户是您的内部员工,还是公共网站?每天运行多少查询?查询是否重叠?用户是否真的查询所有表中的数据,还是他们倾向于只查询特定日期范围(例如过去 30 天)?表占用多少存储空间(只是想知道它是否可以保留在内存中)? 它不会是一个公共网站,但它会被有多个用户的许多客户使用(目前有 15 个用户,但一年内将有 200 个用户等)。我会说用户每天(在他们的工作时间内)进行 50 次查询。他们通常会查询因用户而异的一小部分数据(约占整个数据的 1%)。另外,我想说每个用户 80% 的时间都使用相同的过滤器。目前有大约 100GB 的数据,并且应该每月增长 10GB。 这确实是性能和成本之间的权衡。 Amazon Redshift 可以轻松处理数十亿行,性能取决于数据在磁盘上的存储和排序方式(分布键、排序键)。但是,是否值得为您的用户群全时运行 Redshift 集群是您的决定。 Amazon Athena 是一种成本较低的选项(根据使用情况而非服务器时间定价),但您需要测试它是否能够为您提供所需的速度(提示:使用分区 Parquet 文件!)。我会说从一个普通的 PostgreSQL 数据库开始,如果它的性能不够好,请尝试 Redshift。 【参考方案1】:由于您将数据库用于分析目的,因此建议使用 OLAP (Redshift).. OLAP 数据库旨在快速处理大型数据集以回答有关数据的问题。 您可以在这里比较价格
https://medium.com/2359media/redshift-vs-bigquery-vs-snowflake-a-comparison-of-the-most-popular-data-warehouse-for-data-driven-cb1c10ac8555
【讨论】:
SELECT 查询是否被视为“分析目的”,因为它是相当简单的查询?据我了解,对于快速检索数据,OLTP 更适合我们吗?我要强调的是,我们需要非常快速地检索数据。 Redshift 没有一些启动开销会导致获取速度变慢吗?谢谢你的回答! 取决于查询的复杂性。像 DynamoDB 这样的数据库在处理复杂查询时存在局限性,执行包含多个搜索条件的查询以及基于不同列的排序可能会很棘手。另一方面,Redshift 在扫描数百万行的复杂查询的情况下具有出色的性能。 您认为十亿行的“SELECT * FROM Table WHERE Country='X' and City='Y'”是一个复杂的查询吗?是什么让它变得复杂,是行数还是查询本身? 如果你不使用复杂的查询比如加入多列,你可以关注@John Rotenstien的评论以上是关于我应该使用数据仓库还是数据库或其他东西?的主要内容,如果未能解决你的问题,请参考以下文章