FunDA:一个开源的函数式数据处理工具库,也是Slick的补充

  如果你是一个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 欢迎大家下载尝试。希望大家能有良好的使用体验。作为一个开源项目,作者更希望能有更多的人直接参与这个项目的开发,为项目发展作出贡献。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏匠心独运的博客

分布式事务 ( DTS ) 你必须知道的事儿

目前云计算、大数据、互联网领域的大部分系统都采用了SOA、微服务化的架构。一个涉及端到端全链路的业务操作往往会由多个服务和数据库实例共同完成。因此,在一致性要求...

602
来自专栏Linyb极客之路

面对海量请求,缓存设计还应该考虑哪些问题?

从第一个缓存框架 Memcached 诞生以来,缓存就广泛地存在于互联网应用中。如果你的应用流量很小,那么使用缓存可能并不需要做多余的考虑。但如果你的应用流量达...

764
来自专栏文渊之博

T-SQL性能调整(一)--编译和重新编译

概念简介 我们平时所说的查询在SQLServer 中主要有两部分来实现: 编译查询,主要包括了五个环节(缓存查找、分析、代数化、优化、缓存新计划) ?     ...

1809
来自专栏idba

MySQL性能优化特性 Index Condition Pushdown

一 概念介绍 Index Condition Pushdown (ICP)是MySQL 5.6 版本中的新特性,是一种在存储引擎层使用索引过滤数据的一种优...

713
来自专栏kl的专栏

mysql日志binlog消费初体验

早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从20...

5828
来自专栏PHP在线

SQL语句执行过程详解

一条sql,plsql的执行到底是怎样执行的呢? 一、SQL语句执行原理: 第一步:客户端把语句发给服务器端执行 当我们在客户端执行 select 语句时,客户...

4346
来自专栏小怪聊职场

MySQL(六)|《千万级大数据查询优化》第二篇:查询性能优化(2)

2619
来自专栏ImportSource

微服务业务开发三个难题-拆分、事务、查询(下)

上集:微服务业务开发三个难题-拆分、事务、查询(上) 上集我们阐述了使用微服务体系架构的关键障碍是领域模型,事务和查询,这三个障碍似乎和功能拆分具有天然的对抗...

44912
来自专栏匠心独运的博客

过来人的经验,谈谈一致性处理方案—分布式事务(DTS)

传统事务是使用数据库自身的事务属性(ACID),而数据库自身的事务属性是局限于当前实例,不能实现跨库。而对于大型分布式/微服务集群系统中,不仅存在着跨库的事务,...

1524
来自专栏Linux运维学习之路

Linux中MySQL配置文件my.cnf参数优化

MySQL参数优化这东西不好好研究还是比较难懂的,其实不光是MySQL,大部分程序的参数优化,是很复杂的。MySQL的参数优化也不例外,对于不同的需求,还有硬件...

3928

扫码关注云+社区