怎样评价智臾公司及其DolphinDB(海豚大数据系统)

说下主要特性,DolphinDB主要有三大功能组成:
1)分析型数据库
2)脚本语言
3)分布式计算框架
这三大功能全部整合在一个DolphinDB实例中。
分析型数据库
基于内存的列式分析型数据库,没有传统RDBMS的bufferpool、锁表等overhead,直接操作内存,速度极快,特别适合分析类、Star-Like Query Workload。支持两层数据分区,水平分片到多个节点上,节点内再可以继续分片。数据压缩存储时间序列处理功能,拓展的时间数据类型、基于向量的函数、拓展的SQL语言等特性使得时间序列处理极其方便脚本语言
DolphinDB内置基于向量的的脚本语言,语法和Python类似,表达能力极强,可以直接在里面写SQL语句,可以说是SQL和Python的融合。支持数据类型包括数组,非连续大数组(充分利用内存碎片),矩阵,集合,字典,表,元组。DolphinDB的脚本语言还支持函数式编程,支持高阶函数,用户自定义函数,匿名函数,lambda表达式,部分应用,闭包,纯函数以及远程函数调用。内置的大量模板函数可以大大简化数据处理。支持动态加载C++编写的插件文档齐全支持常用的统计和机器学习模型脚本语言直提交到DolphinDB实例上执行分布式计算框架
支持map-reduce,迭代计算模型p2p架构分布式应用开发速度快,用户自定义函数不需要向Spark那样到处上传,DolphinDB内部直接分发编译好的用户自定义函数到集群中为什么比Spark快?
DolphinDB通过以下方法优化系统性能:
(1)用C/C++开发,没有GC,比用Java开发的程序速度更快。
(2)DolphinDB使用线程池而不是进程来实现多用户和并行计算的问题,开销更小,速度更快。
(3)DolphinDB采用非常扁平化的设计,使绝大多数计算和查询在1~2个模块中就可以完成,避免或减少数据在不同系统、组件、模块之间移动和转换。
(4)使用列存储结构,减少了对不相关数据的访问。
(5)优化DolphinDB内置的开发语言,最小化数据在执行过程中的复制。
(6)改进核心的数据结构算法,比如整数排序算法的速度是别的产品的5~10倍。
(7)采用自有的内存管理模块,根据大数据的内存分配特点优化内存管理算法。
公司初创不久,产品还有很多功能正在完善,现在已经有Community版本可以测试了。
可以去官网逛逛,DolphinDB。

■网友
我之前在香港的投行使用KDB有好几年的时间了,正在试着用DolphinDB。目前对DolphinDB还在探索之中,但是总体感觉DolphinDB比KDB更适合作为金融数据库。
下面的比较,由于学识有限,可能会有不对的地方。
编程及Query语言学习难度:KDB的学习曲线明显更为陡峭。KDB的q语言,由于追求简洁,重载的关键词非常多。新手要在不断看文档,阅读他人代码之后,才能拥有比较强的编程能力。DolphinDB在编程语言上则比较平易近人,接近python。 DolphinDB的query语言也比较接近标准的sql语言。
语言可读性:DolphinDB的关键词比较长,且重载较少,较KDB的q语言更容易理解。
其他: q语言虽然学起来难,但是在学习的过程中,会对程序语言设计有更好的理解。熟练掌握q之后,会有Geek的感觉。 DolphinDB的语言目前我还在学习之中,但是明显感觉到DolphinDB语言非常好用:不仅支持向量运算,也兼具面向对象的一些优点。
数据库KDB的数据库应该比dolphinDB落后一代。因为非CS出生,所以不重点在DolphinDB的分布式,高可用上着笔。
sym文件:KDB数据库非常依赖sym这个文件。部分增加鲁棒性的工作都是围绕sym文件的,比如备份,比如验证新增的数据不会增加很多新的symbol。由于DolphinDB的研发者也是KDB的老用户,他们把sym文件放在了每个partition之中,解决了过度依赖sym文件的痛点。
多个数据库支持:如果我们有两个KDB数据库,一个是股票市场的,一个是期货市场的。load前一个数据库,就会屏蔽另一个数据库。对于做跨品种套利来说,写q代码就不是很方便。dolphinDB非常自然地解决了这个问题,一个数据库一个handle,完全不互斥。


推荐阅读