【问题标题】:Database solution for self-service自助服务数据库解决方案
【发布时间】:2018-09-08 14:08:56
【问题描述】:

我是一名分析师,为其他团队准备 Tableau 报告和分析。我想通过创建一个如此优化的数据源来减轻我的负担,以便用户能够使用它来获取他们需要的数据并自己进行分析。

现状:

我们使用 Amazon Redshift。我们有直接来自系统的原始数据的表格。此外,我们还有一些转换后的表格,以便于工作。总而言之,它是几十和几十张桌子。我们正在使用 Tableau 桌面和 Tableau 服务器。

期望的情况:

我想保留对原始数据的访问权限,以便我可以将任何潜在问题回溯到原始来源。从原始数据中,我想创建允许用户对其进行查询的转换表(两层系统)。这些表应该包含用户可能需要的所有数据,但对于初级 SQL 用户来说足够简单。

我看到了两种解决方法:

  1. 包含所有数据的少量非常大的表。如果只有几个表包含最大量的数据,用户可以只查询一个表并询问他需要的列。或者,如有必要,将一两个表加入其中。
  2. 许多小型且非常专业的表格。用户必须进行多次连接才能获得所需的数据,但所有表都非常简单,因此不会很困难。

此外,还需要考虑对数据的访问权限。

您认为解决我的问题的好方法是什么?是上述两种解决方案中的任何一种吗?您还有其他解决方案吗?你会推荐什么?

【问题讨论】:

  • 为此,我将建立一个由数据湖支持的简单数据仓库来保存原始数据。我会使用气流来协调工作以实现这一点。我会考虑红移光谱并将原始数据保存在 s3 上。

标签: database database-design amazon-redshift


【解决方案1】:

我们遇到了这个问题,我们用AWS Athena 解决了。您只需在扫描和使用数据时付费。否则,您将不会付款,也不会触及任何数据。

使用AWS Athena,您可以创建具有不同属性的任何表集,并且易于维护角色权限。

最后要介绍的部分,Tableau 具有与 Athena 的直接接口,因此不需要任何中间存储。

此外,当您不想要该表时,只需从角色中删除和移除即可。其余的将自动得到照顾。

在附加说明中,我们在 JSON 数据上尝试了 Redshift Spectrum,它还不适用于嵌套 JSON。所以你所有的属性都应该只有一层。

希望对你有帮助。

EDIT1:

Redshift 是列式数据库,没有小表和大表的区别。如果您可以避免与较小的表连接。即使表更大,您的查询速度也取决于查询中涉及的字段。如果查询中不需要某个字段,则在查询数据时永远不会触及它。

我更喜欢将所有相关数据放在一个更大的表中,因此需要将任何关系或连接复制到表中。

另外你需要确保当你存储在一个更大的表中时没有太多的重复数据。

关于数据库规范化的更多信息,

MySQL: multiple tables or one table with many columns?

【讨论】:

  • spectrum 类似于 athena,取决于您的使用情况,哪个最适合您。您可以更灵活地使用频谱。也 - 见aws.amazon.com/about-aws/whats-new/2018/03/…
  • 我们在 Amazon Redshift 中有数据,我们希望保持这种状态。问题更多在于如何优化表格结构,使其对非技术用户最友好,以便他们可以将其用作自助服务。
  • @JanHorčička 对不起,我没有解决那部分。更新了答案。优先考虑列式数据库上的大表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-12
  • 2011-08-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多