问题标签 [data-vault]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
database-design - Data Vault 和 Dimensional 建模之间的区别?
在对数据仓库进行建模时,是否有任何理由我们应该偏爱Data Vault而不是维度建模?这两者之间的主要区别是什么?
mongodb - NoSQL 的数据仓库
我有很多 JSON 格式的数据,我想用它们建立一个数据仓库。由于数据量很大,而且是半结构化的,所以我想使用文档 NoSQL 数据库,例如 MongoDB。
关于数据建模,我想到了使用数据仓库模型。是否可以在 NoSQL 数据库(例如 MongoDB)中使用数据保险库模型?在这种情况下有什么好处和坏处?
database-design - 来自不同来源的 Data Vault Hub
所以我正在尝试实现一个数据保险库。我在为集线器建模时遇到了一些困难。我有 2 个互不通信的系统。我想知道如何在集线器中表示来自不同来源的相同项目。
在我们的订购系统中,它会生成一个数字来区分客户。因此,假设我们有一个名为“Bob”的客户,他需要我们在 5 个地点提供服务。因此,我们将这 5 个地点视为单独的客户。所以我们得到了 5 个不同的客户 ID(10004-10008)。到目前为止,在 Data Vault 中很容易。
现在棘手的部分是在我们的操作系统中。我们有一个复合业务密钥。因此,我们得到一个唯一的客户名称“bob”和他的每个位置的序列号 (1-5)。所以 (bob,1) 是唯一的,但我们也可以有一个 (joe,1)。
在我们的操作系统中,无法输入订购系统的 ID。在我们的订购系统中,(bob,1) 信息直到 (bob,1) 已经创建好之后才被填写。
所以时间线可以是这样 Bob 进来并说我需要 5 个位置。订购系统为他提供 ID (10004-10008)。一周后,他在我们的操作系统中创建 (bob,1), (bob,2)...(bob,5) 然后也许 2 周后我们会看到 (10004,bob,1), (10005,bob ,2) 在订购系统中。
如何处理这种情况?
谢谢
sql-server - SQL Server 中的 Data Vault 2.0
在 Data Vault 2.0 中,对业务键进行散列处理并将该散列作为表的主键。链接表也使用散列主键来创建关系。
我的问题是散列基本上是随机的,查询优化器无法应用任何好的估计,因为统计信息 - 当然 - 不适用于随机分布的数据。
所以查询优化器使用奇怪的计划来经常排序(因为它认为只有 4 行要排序)。既然我肯定不是第一个在 sql server 中处理数据保险库的人,那么如何解决这个问题?
当查询优化器使用索引查找或连接运算符时,它完全错过了行估计,因此选择了荒谬的计划。
我必须用连接提示和查询提示(例如(FORCE ORDER))来拉皮条,以从中得到任何东西。
常见的方法是什么?
etl - 我应该在暂存区还是在 ETL 中从暂存区添加到 DWH?
我们按照以下结构规划 EDW。
操作系统 --> 暂存区 --> EDW(数据保险库)
根据数据保险库法,需要对业务密钥进行哈希处理。我应该在暂存区还是在 ETL(从暂存区到 EDW)中实现散列。
人们通常如何处理在暂存区添加元数据?
非常感谢
data-modeling - 为什么通过数据仓库建模在维度表中使用序列号与版本号
在维度建模的上下文中,作为典型案例,在维度表中有代理键来跟踪行的变化是很棒的( http://www.kimballgroup.com/2006/07/design-tip-81-fact-表代理键/)。
代理键的实现常用的三种方式 1) 序列号 2) 版本号 3) 散列键(数据保险库使用)
我的问题是:为什么在我见过的大多数维度建模中都首选序列号。
非常感谢
database - Data Vault 2.0 - 当我们有信息集市时,为什么我们需要业务保险库?
当我们可以在构建信息集市的同时应用业务规则时,拥有一个业务库的目的是什么?
database - Data Vault - 如何选择业务密钥?
如果以下三个唯一属性来自 3NF 模型中的 SalesOrderHeader 表,那么哪一个将是 SalesOrderHeader Hub 的理想业务键:
- SalesOrderID(原始表的PK)
- 销售订单号
- 订购单号码
database-design - Data Vault 2.0:LINK 的非参考标识
我希望表示一个由其他实体的身份(外键)和额外信息标识的实体。下面是一个具体的场景。
实体:
- 产品
- 顾客
当客户购买产品时,就会下订单。订单还包括一个序号,表示同一组客户和产品的不同购买。例如,如果客户 James 购买了 2 次产品胶水,那么我将拥有 (James,glue, 1), (James,glue, 2)。订单的标识是客户、产品和序号的组合(这是业务需求,也是为了便于后续数据更新/更正)。
然后我将产品变成 HUB,将客户变成 HUB,将订单变成 2 个 HUB 之间的链接。
我想弄清楚的是如何在订单链接中包含序号。
我的一个建议是做一个 HUB 来存储序号,并用序号预填充它,(从来没有任何客户购买相同的产品 100 次,所以 100 行预填充应该足够了)。那么Order LINK也可以参考序号HUB进行一些标识。
请让我知道这是否是一个好方法(我真的不喜欢我必须预先填写一些东西,例如做出假设,以便数据库工作)。如果不是,有什么更好的选择?
amazon-redshift - Redshift 和 ETL 策略中的数据保险库
我有一堆数据存储在 Amazon S3 中的文件中,并计划使用它在 Redshift 中构建一个 Data Vault。我的第一个问题是正确的方法是在 Redshift 中构建 DV 和数据集市,还是我应该将 S3 视为我的数据湖并且只有 Redshift 中的数据集市?
在我的架构中,我目前正在考虑前者(即 S3 Data Lake + Redshift Vault 和 Marts)。但是,我不知道我是否可以直接在 Redshift 中创建 ETL 流程以使用 Vault 中的数据填充集市,或者我是否必须使用 Amazon EMR 来处理 S3 中的原始数据,在那里生成新文件并最后将它们加载到集市中。
所以,我的第二个问题是:ETL 策略应该是什么?谢谢。