ORM vs序列化数组?

时间:2012-02-22 02:38:52

标签: database arrays orm

我只是在学习ORM,我想知道......如果你有一个对象(一个JSON让我们说......并且假设它密集,包含嵌套对象,那么它们的属性总数可能会因对象而异)对象等),反对简单地将其转换为序列化数组并将其存储在表中会产生什么反对?

我所描述的对象可能无论如何都不会正常化;它会有一个不确定数量的属性意味着一个不确定的列...将这种东西映射到一个表将需要一个疯狂的行和键遍布整个地方。

如果您最终计划查询数据库以获取对象然后通过代码进行处理,那么简单地序列化或使用某种OODB有什么缺点?使用ORM可以获得什么?

1 个答案:

答案 0 :(得分:0)

我的经验是,因为ORM的存储层期望存储数据是动态的,因此不会对其格式抱有任何先入之见,因此可以更好地处理规范的例外情况。 (不是实际的错误异常,而是对象与数据库模式不匹配的情况)

当您处理动态对象时,经典存储强制执行的刚性通常会强制您处理规范的异常或创建一个如此松散的数据库模式,使用它会破坏数据库引擎通常授予的优化;想想计算统计数据和各种指数。

然而,最终我认为你已经在第二段中找到了解决方案:如果它不能正常化,那么你将无法将其表示为一个足以使你的数据库高效工作的模式。 / p>

当然,你可以将整个对象序列化为一个数组并存储它,但是你失去了良好的索引,全文搜索以及能够交叉引用对象而不必进行多次读取的效力。

上面的一个示例,假设您的数据库正在对电子商务订单进行建模,并且您希望查找后续采购订单到初始订单。数据库需要知道如何读取每个序列化项目以找到它的parentId属性,然后重新扫描表格以进行匹配。

长话短说,ORM是对面向对象编程梦想存在的问题的回答 - 不要担心它并使用它们,除非你确定你的数据结构/架构是僵硬和明智的到SQL。