如何将现有的关系数据库模型转换为适合无 sql 数据库的模型(如 Mongo DB 或 Amazon Dynamo DB)
Posted
技术标签:
【中文标题】如何将现有的关系数据库模型转换为适合无 sql 数据库的模型(如 Mongo DB 或 Amazon Dynamo DB)【英文标题】:how to convert existing relational database model into model suitable for a no sql database (like Mongo DB or Amazon Dynamo DB) 【发布时间】:2012-04-30 21:12:23 【问题描述】:我想修改现有的 java 购物车应用程序,使其与 Amazon Dynamo DB 或 Mongo DB 等 nosql 数据库一起使用...但传统的 mysql 数据库是关系数据库-它具有复合键/主键/外键-- 相比之下,在 Amazon Dynamo DB 中,要么有一个主键,要么有一个由 2 个字段组成的复合主键......
我有关系数据库的详细数据模型...现在我该如何转换它,以便我在 Amazon Dynamo DB 中拥有一个能够使应用程序与 Dynamo DB 一起工作的数据库(即没有 Sql 数据库)?执行此操作时是否必须牢记任何最佳实践/预防措施?这是否也会涉及大量重写应用程序代码的工作?或者我可以在数据库级别本身处理所有更改,而不修改应用程序的逻辑? 另外,是否有任何工具可以完成大部分/大部分工作?
【问题讨论】:
据我了解(如果我错了,请纠正我),几乎所有处理 SQL 的代码都必须更改。每当您查询某些内容时,您都必须通过键查找它,或者您必须扫描数据库,直到找到您要查找的内容。这听起来可能很慢,但如果做得好,它会比 MySQL 快得多。 伙计,你真的认为没有架构/数据流知识就可以回答吗?我实际上正在使用 Mongo,到目前为止我学到的主要内容是您使用数据的方式决定了您的新架构。 【参考方案1】:没有自动化的方法。像 MongoDB 这样的 NoSQL 数据库不像 MySQL 那样映射数据结构。有不同的性能特征和存储数据的不同方式。在某些情况下,您会将两个 SQL 表合并到一个集合中,您只需将连接的数据包含在同一个文档中。
如何以及何时执行此操作完全取决于您在逻辑上如何对数据进行分组,但同样取决于您对数据施加的工作量。例如,对于大量读取和少量写入,您存储数据的方式可能与写入大量写入和少量读取的情况不同。
除了必须重做从应用程序到数据库的接口之外,您还必须重新构建数据模型。这将与设计 SQL 结构一样多,而且最好不考虑如何在 SQL 中完成它。 NoSQL 与 SQL 是两种完全不同的野兽,需要区别对待!
【讨论】:
【参考方案2】:这是一个开始:http://mongify.com/ 这不是一个“全自动”解决方案,但它看起来可能是一个有用的工具,至少可以用作逆向工程 SQl 应用程序作为 MongoDB 应用程序工作的“大纲” .
【讨论】:
你有没有机会加入 mongify?以上是关于如何将现有的关系数据库模型转换为适合无 sql 数据库的模型(如 Mongo DB 或 Amazon Dynamo DB)的主要内容,如果未能解决你的问题,请参考以下文章
如何将现有的非文档核心数据存储转换为 uimanageddocument?