如果你是一个Slick用户,或者你是一个数据库编程人员正在尝试进入函数式编程模式,那么FunDA可能会帮到你。
目前市面上FRM(Functional Relational Mapper),即函数式的数据库处理工具库的选择并不多,Typesafe公司的Slick可能是最通用的选择了。整体上来说:Slick还是一个不错的函数式数据库编程工具,用scala语言,很多地方引用了函数式的抽象模式和对象(functional abstractions and objects)。但是,FRM是一种偏重数据读取(data access)的开发模式,骨子里是一种批次运算模式,缺少了数据处理(data processing)所惯用的recordset逐行处理方式。对于那些习惯了使用ORM(Object Relational Mapper)的资深数据库软件编程人员来说,这几乎是他们在大型复杂数据库软件开发项目中无法使用Slick的致命弱点。另一方面市面上容易掌握的能实现数据处理并行运算的开发工具也不多,对这方面的需求也比较旺盛。
FunDA在Slick功能的基础上增加了recordset数据集逐行处理功能,让使用者感觉亲切,能更灵活自然的在前台内存里实现强大的数据处理功能。更重要的是FunDA增加了并行运算功能,可以实现对数据库的并行读写、以及数据处理函数的并行运算。此外,FunDA的数据库读取方式支持reactive-streams标准,能对大量数据进行后台缓存,然后逐块输出,保证了资源的安全使用。
虽然作为一个函数式组件库(combinator library),但考虑到FunDA的使用人群是面向那些有着丰富数据库编程经验的编程人员,应该尽量降低用户对函数式编程技能的水平要求。FunDA通过一套自定义函数编程模式能使用户按照固定的方式编写程序,避开函数式编程的多样方式,把精力集中在数据处理功能上。
FunDA现在已经是一个开源项目了。项目地址是:https://github.com/bayakala/funda 欢迎大家下载尝试。希望大家能有良好的使用体验。作为一个开源项目,作者更希望能有更多的人直接参与这个项目的开发,为项目发展作出贡献。