使用 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
如何在 python 中在 spark notebook 上使用 pandas(dashDB 上的数据)