沉重
数据库建设和使用都非常笨重、臃肿,无法很好适应灵活多变、随处可见的计算需求
封闭
数据库的计算要在库内才能实施,难以完成跨(异构)库计算、无库计算
数据入库费时费力费资源
数据库无法嵌入使用,限制灵活性
同理,hadoop相关技术也面临同样的问题
数据库建设和使用都非常笨重、臃肿,无法很好适应灵活多变、随处可见的计算需求
数据库的计算要在库内才能实施,难以完成跨(异构)库计算、无库计算
数据入库费时费力费资源
数据库无法嵌入使用,限制灵活性
同理,hadoop相关技术也面临同样的问题
数据库本身存在结构性问题,而数据库语言(sql)则又成为影响数据库的另一因素:
sql不提倡过程,难以实现复杂计算,经常要写得很长
嵌套多层的复杂sql很难调试
*扩展阅读:
java也常用于数据计算,但其算法实现比sql还要复杂(缺少集合运算类库)
python也被用于数据计算
pandas不是专业结构化数据计算包,在处理分组有序等复杂运算时较为繁琐
python几乎不具备集成性,很难嵌入到应用中实施计算
*扩展阅读:
计算目标:某支股票最长连续涨了多少交易日
select max(continuousdays)-1 from (select count(*) continuousdays from (select sum(changesign) over(order by tradedate) unrisedays from (select tradedate, case when closeprice>lag(closeprice) over(order by tradedate) then 0 else 1 end changesign from stock) ) group by unrisedays)
可以试试能不能读懂这句sql,而这个计算用自然思维很好解决
*扩展阅读:
select max(continuousdays)-1 from (select count(*) continuousdays from (select sum(changesign) over(order by tradedate) unrisedays from (select tradedate, case when closeprice>lag(closeprice) over(order by tradedate) then 0 else 1 end changesign from stock) ) group by unrisedays)
sql在使用窗口函数的情况下嵌套三层完成;
前面读懂了吗?
a | |
---|---|
1 | =stock.sort(tradedate) |
2 | =0 |
3 | =a1.max(a2=if(closeprice>closeprice[-1],a2 1,0)) |
其实这个计算很简单,按照自然思维:先按交易日排序(行1),然后比较当天收盘价比前一天高就 1,否则就清零,最后求个最大值(行3)
spl特别适合复杂过程运算
专门针对结构化数据表设计
直接使用多个数据源混合计算,无需后台先将数据统一(etl)后再计算
通过spl可以针对mongodb和文件等使用sql进行查询
通过spl可以针对mongodb和文件等使用sql进行查询
spl解释执行,支持不停机热切换
方便地针对单任务实施多线程计算
集算器还可以辅助rdb计算,提升rdb能力
借助集算器的跨库与并行能力实现多数据库集群计算
集算器同时关联多个数据源进行实时数据混算,提供跨源t 0查询
可以通过spl原生语法进行文件计算,同时支持sql查文件,简单方便
集算器可以强化mongodb计算能力,简化计算过程
传统etl往往先l再et,费时费力;通过集算器可以实现真正的etl过程
使用集算器替代java计算可以降低编码难度,提升运算效率
使用java做处理在线计算会导致与应用耦合度过高,集算器可以解耦计算模块,单独运行维护
java程序必须和主应用一起编译打包,耦合度高
使用java编写的算法有修改后会导致整个应用重新编译部署,很难做到热切换。
集算器脚本文件可以单独维护,方便模块化
集算器是解释执行的语言,很容易做到热切换
集算器嵌入报表应用中完成报表数据准备工作(计算引擎),弥补报表工具本身计算能力不足