我在我的Python平台中使用Redis(redis-py)。最近有人建议我切换到ORM。
在NoSQL世界中使用ORM被认为是不好的做法吗?
答案 0 :(得分:4)
最终问题归结为你想在什么层编写代码。
是否要编写在远程数据库中处理数据结构的代码,或者是否要编写使用在这些数据结构之上构建的抽象的更高级代码?您可以将其视为关于关系数据库的类似问题,您想要编写SQL,还是想编写更高级别的代码?
就个人而言,尽管我自己使用rom
执行各种任务(我是作者),但我也会在相同的项目中直接操作Redis。
答案 1 :(得分:2)
注释指出ORM中的R用于关系在技术上是正确的。这并不意味着图书馆没有有效的用途和理由来抽象redis。
有一些很棒的库可以与redis连接,感觉对你正在使用的语言更好,更惯用。对于像ohm
或redis-native_hash
这样的ruby库(披露:我写过那个)就是这么做的。对于python,有redisco
等工具,肯定还有其他工具。这使得持久化对象变得非常简单,并且使用redis感觉更像ruby-ish或python-ish。
使用即使是最基本的抽象,还有一些好处,比如你可以编写并保存在应用程序中的非常薄的包装器:
切换redis客户端会更容易。也许你永远不会这样做,但如果你这样做,在一个地方(你的包装器)更改你的redis调用比在你使用redis的地方更改它们要简单得多。
如果通过某种抽象方式进行调用,实现扩展所需的内容(如分片或连接池)可能会更容易。
如果有抽象的话,用其他一些键/值存储或数据结构服务器替换redis会更简单。
我不是主张使用对象映射库或构建自己的抽象,只是指出有正当理由的原因。由您来评估您的需求并选择最适合您的方案。直接调用redis也没有错。