新手问题 Sequel 在做纯 API 项目时是不是比 ActiveRecord 更有优势?

cysh · 2016年04月11日 · 最后由 geniousli 回复于 2016年04月13日 · 4625 次阅读

纯 API 的项目 Sequel 有什么比较明显的优势吗?

修改了一下标题(原标题:ORM 选择 Sequel 还是 ActiveRecord?)

当然是 Sequel 了 http://sequel.jeremyevans.net/rdoc/files/doc/active_record_rdoc.html ActiveRecord 才是没有明显优点

ActiveRecord,遇到问题有人回答。

#1 楼 @nouse :trollface: …我其实蛮想知道 Sequel 对比 ActiveRecord 的优势在哪里的?

熟悉度不够,用 Sequel 就是找抽

ActiveRecord 那么多资源,不管是三方扩展库,还是问题解决方案

#3 楼 @cysh 链接要看啊,相应的文章也很多。简单来说用 pg 就应该用 sequel,jsonb 也支持

新手路过。对于我来说,用 RoR 的一大关键原因在于 ActiveRecord

#5 楼 @nouse ActiveRecord 也支持 jsonb

#5 楼 @nouse 链接之前学 Sequel 的时候看过,但除了提到了更灵活(这算明显优势嘛?),不知道还有什么比较明显的优势?(比如查询效率,线程安全之类的?) DB 用 MySQL

#4 楼 @huacnlee thx! 熟悉度不是一下就提升上去的吧…如果 Sequel 更好自然有必要去学去用?出于这方面考虑才提出这个问题。望能解答:Sequel 在做纯 API 项目时是不是比 ActiveRecord 更有优势?

#8 楼 @cysh 我是说对 Ruby 的熟悉度!

核心维护者就那一个人,你觉得会比 ActiveRecord 好?

我实在无法理解放着那么好的 ActiveRecord 不用,跑去用类似 Sequel 这里库,是怎么想的?!

你选择亲身体验,被多虐几次就知道两者的好坏了

#10 楼 @huacnlee 不能这么比吧,其实核心维护者只有一个人更能说明 Sequel 的设计好:

  1. Sequel 一直是 0 issue 的:https://github.com/jeremyevans/sequel/issues
  2. AR3 之后,大部分特性其实是从 Sequel 借鉴来的:http://twin.github.io/activerecord-is-reinventing-sequel/

PS. 其实没有实际项目中用过 sequel......

http://www.railsmine.net/2015/09/sequel-vs-active-record-orm-benchmark-postgresql.html?m=1 这个比较一抓一大把

至于维护的人员多嘛,bug 多 owner 懒得修就变成这样了。

再补充一下,sequel 作者非常高产,还 fork 了 cuba 写了 roda,还写过一个对 ruby 的时间增强的 home_run。sequel 对于 pg 的增强我至今没有在 activerecord 看到,是不是 1 比 0 完胜啊。

貌似 sequel 可以直接在 jruby 下运行哇,运行环境从 ruby 换到 jruby 的话不需要换 ORM 啊

#10 楼 @huacnlee Ruby 的熟悉度一直在加强中…会继续努力的 😄

#13 楼 @nouse 谢谢,链接很有用 :plus1:

#14 楼 @ywjno ActiveRecord 也可以在 JRuby 跑,将 adapter 从 pg 改成 activerecord-jdbcpostgresql-adapter

个人推荐 ActiveRecord。:)

有些时候 AR 里很简单实现的一些功能,在 Sequel 里需要做一些小小的、有时候并不是非常明显的调整。两年多前我写过一篇 blog“抱怨”了一下 Sequel 的 API:http://fredwu.me/post/58910814911/gotchas-in-the-ruby-sequel-gem

#16 楼 @richfisher 我知道可以跑,但这需要换驱动的 gem 包不是,sequel 就自带数据库驱动因此在这方面不用考虑运行环境

对了还想到一个好处,sequel 自带 migrate 功能可以直接运行 sequel -m db/migrations postgres://localhost/sequel_test 这样跑数据库迁移,ActiveRecord 有谁知道如何在非 rails 环境下单独使用 migrate 功能的话能否指点一下?

#19 楼 @ywjno 需要手动写 rake file,不过很简单的。 给你个参考 https://github.com/robbin/ruby_framework_bench/blob/master/grape_on_goliath/Rakefile (这个是 robbin 写的) 其实常见的 framework 都有 ActiveRecord 的相关库的: https://github.com/jhollinger/grape-activerecord How do I use ActiveRecord migrations?(Sinatra) http://www.sinatrarb.com/faq.html#ar-migrations

这一部分其实我也只是一知半解,希望能有人来讲解下 rake file 的相关

用过了才知道 ActiveRecord 的好,用多了才知道 ActiveRecord 的不好😄 如果不知道 ActiveRecord 有哪些不好,或者可能这些缺点对自己没有影响,就用 ActiveRecord 咯

做项目我会选择 AR,各种插件丰富,遇到问题也容易搜索,migration 也可以脱离 Rails 使用。 写数据脚步什么的,我会用 Sequel,比较直接,感觉用起没有 AR 那么多潜在的规则要求

Sequel 有很多超越 Activerecord 的地方,多用酒知道了

下面是应该主要关注的点吧: 文档:查看 sequel 跟 AR 的文档对比 问题解决方案:stack overflow 的问题数目 工具数目:比如 ranksack,sequel 对应的版本实在太烂

实际工作开发: 可以先分别使用两种模型试着写一些小的功能或者常用的 sql,对比一下,看看那个复杂度,耗时更多。

** 我说的都是开发速度哦,而不是性能 **

个人看法: 因为公司原因,接触 sequel,适应了 AR 之后感觉 sequel 太烂,需要关注太多细节,比如讲所有的 callback 下载一个 after_save 函数中,而且还需要关注回调的 super 调用顺序。还有 在 sequel 中写 sql 实在太难。各种可以使用原生 sql 解决的问题,需要用各种曲折的方法解决。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号