自助服务的数据库解决方案

时间:2018-03-29 14:47:54

标签: database database-design amazon-redshift

我是一名分析师,准备Tableau报告并对其他团队进行分析。我希望通过创建一个如此优化的数据源来获得我肩负的一些工作量,用户将能够使用它来获取所需的数据并自行进行分析。

现状:

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

理想情况:

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

我认为有两种方法可以解决这个问题:

  1. 包含所有数据的少量非常大的表。如果只有几个表包含最大数据量,则用户只需查询一个表并询问他需要的列。或者,如有必要,再加入一个或两个表格。
  2. 许多小型且非常专业的表。用户必须进行多次连接才能获得所需的数据,但所有表格都非常简单,因此并不困难。
  3. 此外,还需要考虑对数据的访问权限。

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

1 个答案:

答案 0 :(得分:0)

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

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

最后一部分,Tableau与Athena有直接接口,因此无需任何中间存储。

此外,只要您不想要桌子,只需删除并删除角色即可。其余的将自动照顾。

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

希望它有所帮助。

<强> EDIT1:

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

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

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

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

MySQL: multiple tables or one table with many columns?