【发布时间】:2011-05-05 04:32:51
【问题描述】:
Object-Relational-Mapper 旨在帮助应用程序(根据对象进行思考)以对应用程序更友好的方式处理存储的数据,就像所有其他类/对象一样。
但是,我从未见过用于 NoSQL“键/值”存储系统的 OKM(对象键/值映射器)。这看起来很奇怪,因为与常规的单个 SQL 表行对象相比,必须将更多的价值关系硬编码到应用程序中,因此需求应该大得多。
four requests:
user:id
user:id:name
user:id:email
user:id:created
vs one request:
user = [id => ..., name => ..., email => ...]
此外,您必须跟踪“列表”(发布 has_many cmets),因为您没有 has_many 通过表或外键。
INSERT INTO user_groups (user_id, group_id) VALUES (23, 54)
vs
usergroups:user_id = {54,108,32,..}
groupsuser:group_id = {23,12,645,..}
还有更多示例说明应用程序需要复制一些普通关系数据库使用的基本功能的附加逻辑。所有这些原因都让 OKM 的想法听起来很简单。
有吗?有什么理由没有吗?
【问题讨论】:
-
键值对的 ORM?嗯..它会做什么,究竟是什么?问题或多或少是“值”或文档的序列化/反序列化。
-
@qstarin 我还不太确定,尽管它可以处理您的应用程序需要跟踪的关系(如列表)。当您离开 SQL 世界时,您的应用程序必须处理更多事情。