使用 DashDB 作为数据库(而不是数据仓库)

Posted

技术标签:

【中文标题】使用 DashDB 作为数据库(而不是数据仓库)【英文标题】:Using DashDB as a database (instead of a Data warehouse) 【发布时间】:2016-05-27 00:07:00 【问题描述】:

注意:这不是编程问题(至少目前如此)。一旦我开始进一步进步,我会在编程问题上寻求社区的帮助。如果认为此问题不合适,请随时删除此问题。

我正在尝试开始使用 DashDB 作为 Bluemix 上的数据库。 DashDB 数据将由 Java/Java EE 应用程序使用

我不打算将其用作数据仓库。

据我所知,DashDB 有两种风格 - 常规(在这里松散地使用这个术语来指代标准产品)和 DashDB 事务性。

DashDB Transaction,我相信它用于事务性工作负载。

    我想了解 JPA 是否可以很好地与 DashDB 配合使用。我无法在此空间中找到好的信息。 我们是否应该对 DashDB 常规和事务性使用非规范化设计?

【问题讨论】:

【参考方案1】:

dashDB Transactional Bluemix 计划提供了一个针对在线事务处理 (OLTP) 进行了优化的 dashDB 数据库。这意味着它专为高度结构化的重复处理而设计,并且支持 ACID 事务。也就是说,您应该使用与经典 RDBMS 一起使用的所有最佳实践:规范化、约束等。我确认 dashDB-JPA 集成还没有很好的文档记录,但是将它与 JPA 一起使用应该没有特别的问题。由于您的应用程序将在 Liberty Runtime 上运行,因此当您绑定 dashDB 服务实例时,server.xml 会自动配置带有 JNDI 名称的 dataSource,并且还会添加数据库驱动程序 jar。

【讨论】:

【参考方案2】:

如今,JPA 无法与 DashDB 无缝协作。 DashDB 默认使用按列组织,JPA 不能很好地使用它。今天没有特定的方法可以使用 JPA 中的注释来设置按行组织。我们试图覆盖 DB2Dictionary,但这也不起作用。

如果我使用 sql 语句删除表并使用附加按行组织的 sql 语句重新创建表,则 JPA 能够读取该表。

不确定谁应该解决这个问题 - JPA 或 DashDB :)

【讨论】:

新的 dashdb 事务数据库计划实现了按行组织,并且与 JPA 配合得很好。但是,如果您使用的是更便宜的(最多免费 1gb)或分析计划,他们仍然不使用 JPA。解决方法是在开始使用 jpa 之前使用按行组织手动创建表

以上是关于使用 DashDB 作为数据库(而不是数据仓库)的主要内容,如果未能解决你的问题,请参考以下文章

DSX PySpark 使用自定义 JDBC 方言将数据写入 dashDB

使用常规数据库作为数据仓库

dashDB 是不是支持空间对象?

如何在 python 中在 spark notebook 上使用 pandas(dashDB 上的数据)

IBM DataWorks 是不是支持 Object Storage 和 dashDB 之间的集成?

dashDB 上的数据库诊断信息