一个更好用的Clojure ORM库

如果你使用过 Django,你会享受在Django model ORM中。

通过model 层分离了数据库,可以让我们把时间花在更高层次的抽象上,更多的时间用来思考如何解决复杂业务场景,几乎不用花费时间和心力去关注底层运作。

随着时间的推移,我们能够专注于更重要的问题,使得开发变得更为高效和容易维护。

使用原生的SQL语句来进行查询,这样的优点在于能够完全按照开发者的意图来执行,效率会很高,但是缺点也很明显:

  1. 开发者需要非常熟悉SQL语句,加大开发者的工作量,同时,夹杂着SQL的项目也不利于以后程序的维护,增大程序的耦合度
  2. 若查询条件是动态变化的,则会使开发变得更加困难

简单列举几点使用 Model的优点:

  1. 简单 因为简单,所以可以让你快速的开发,而且代码变得更干净
  2. 数据库创建 使用代码来定义数据库,更容易阅读和维护,用过代码自动来进行数据的创建
  3. Migration 数据库变动的时候,通过代码自动的进行Migration,无需关心底层实现细节。
  4. 多种数据库支持 可以灵活切换各种数据库,无需再去修改程序
  5. 多个数据库支持 可以很方便的支持读写分离,同时增加多个读库与多个写库
  6. 操作更容易 非常简单的进行数据的操作:插入,更新,查找,删除
  7. 自动数据验证 在进行数据插入和更新到时候,可以自动对数据进行验证
  8. 关联字段查询 对数据查询可以自动进行 ORM, 自动关联Foreignkey相关字段的表进行查询,非常方便
  9. 默认值字段 可以对定义字段的默认值,这样像创建时间,等的字段就可以自动默认有值,无需在插入数据时手动维护
  10. 支持连接池

互联网项目,开发速度非常关键,需要快速的出最低可用版本,在项目开发的前期,无需关注性能,只需要专注于业务,这时候 model 就能大显身手了。在项目后期,业务逐渐成熟,性能要求上来了,再把orm的部分替换掉就可以了。而且 orm 可以一键生成我们需要的 sql,然后基于这个 sql 再进行优化,是非常方便的。

但是我们可爱的Clojure居然没有ORM的库,最像orm的一个库是Korma,我在两个项目中使用了Korma, 说实话,使用起来很不方便。 好多地方不够人性化,经常出问题一调试就是好几个小时,真的很脑阔疼。

没办法了,自己造轮子吧。

我开发的最初目的就只有一个:为了快速的开发, 快速快速的开发。

开发中,我为他设计了非常漂亮的操作语法,很多地方反复的打磨,同时也要做到和自己写SQL一样的灵活和高性能。

Clojars Project

Github 源码地址:https://github.com/arlicle/laniu

2019-01-09 22:58

留言