3

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

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

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

4

1 回答 1

0

听起来您正在尝试创建一个 ORM 存储数据,它并非旨在存储,这更像是一个平面数据库或文档存储。我会重新考虑您的设计,因为听起来像 Mongo 这样的东西会更适合,因为它会按照您的要求开箱即用。

于 2013-04-09T09:00:17.777 回答