已经创建了对象关系映射器,以帮助应用程序(以对象的方式考虑)像其他所有类/对象一样,以更友好的应用程序方式处理存储的数据。
但是,我从未见过NoSQL“键/值”存储系统的OKM(对象键/值映射器)。这似乎很奇怪,因为与常规的单个SQL表行对象相比,必须将更多的值(value)关系硬编码到应用程序中这一事实的需求应该更大。
four requests:
user:id
user:id:name
user:id:email
user:id:created
vs one request:
user = [id => ..., name => ..., email => ...]
另外,由于没有通过表或外键的has_many,因此必须跟踪“列表”(发布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的想法听起来像是穿鞋了。
有吗有什么原因没有吗?
最佳答案
Ruby的DataMapper项目是一个ORM,将通过使用适配器愉快地与键值存储进行对话。
Redis和MongoDB具有已经存在的适配器。 CouchDB有一个适配器-它没有维护,但在某一时刻它运行得很好。我认为还没有人对Cassandra做任何事情,但是没有理由无法完成。 Google App Engine的Dubious framework采用了与Data Mapper非常相似的方法,以使数据存储可用于应用程序。
因此,很可能对键值存储进行ORM。 ORM确实确实需要避免假设SQL是其主要词汇。
关于database - 有键值存储的ORM(OKM)吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4099130/