任何动态创建模式以支持即席 JSON 对象映射持久性的框架?

Posted

技术标签:

【中文标题】任何动态创建模式以支持即席 JSON 对象映射持久性的框架?【英文标题】:Any frameworks for dynamically creating schema on-the-fly to support adhoc JSON object map persistence? 【发布时间】:2013-03-31 09:44:33 【问题描述】:

这是我试图确定的一个要求——这个传入的 JSON 数据表示一个对象映射(想想嵌套对象,每个对象都有一个或多个属性),我需要将其保存在我的数据库中。现在的问题是我不知道 JSON 数据中会包含哪些属性。当数据进入时,我需要动态构建表和列,并且可以只创建所有字符串类型的列开始。但是如果下一个请求对于给定的对象类型有更多的属性,或者更少的属性,但只是不同的属性集,那么之前创建的对应表应该自动扩展以添加新列,然后允许传入的持久性JSON 数据。对于嵌套对象,每个对象都应该放入单独的表中,如果另外创建某种连接或映射表来维护两者之间的映射,也可以。对象将具有静态“id”属性,可能有一些数字。这需要特别对待,因为没有“id”属性的对象应该被认为是“新”对象,因此应该执行行插入,并且应该在持久化期间为对象生成id。如果对象已经填充了“id”属性,则应将其视为更新操作。还有一个名为“toBeDeleted=true|false”的特殊属性可能会出现在 JSON 对象映射中,最终会触发(级联)删除由 id 标识的对象。

现在的问题是:是否有任何 OR 映射框架,它允许动态扩展架构以保留传入的属性?有没有人处理过这种模式不固定并且需要动态扩展以适应传入数据的要求 - 是否有任何框架支持这种类型的 JSON 持久性行为?

请记住,我试图不创建带有键/值列的表来存储每个对象的属性和值,因为这通常会导致“高”表,这在检索性能方面表现不佳。我真的很想看到每个属性都保留在它自己的列中,而不是作为键/值对类型表中的一行。

【问题讨论】:

【参考方案1】:

听起来您正在尝试让 ORM 存储它不是设计用来存储的数据,这更像是一个平面数据库或文档存储。我会重新考虑你的设计,因为听起来像 Mongo 这样的东西会更合适,因为它可以满足你开箱即用的要求。

【讨论】:

是的,您对 MongoDB 的看法是正确的。还阅读了 CloudDB,似乎这些数据库具有支持 OOTB 的此类功能。伟大的!我应该能够直接针对 CloudDB REST 服务编写 JSON 感知 UI。感谢您的回复。

以上是关于任何动态创建模式以支持即席 JSON 对象映射持久性的框架?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用jackson映射动态json属性名称以进行spring rest模板请求

使用 lodash 映射键或任何其他 javascript 方法 (NodeJs) 动态更改对象键

Java应用如何使用JPA进行对象关系映射和持久化

如何将 json 数据与 Angular 材质表绑定以创建动态表?

使用随机数组创建映射 json 对象

力软平台的后台 ORM技术能支持啥?