0%

进度介绍

下午拉起了协调器krcoordi,简单测试了下其与krserver、krclient之间的协调通信后,krproject的初步框架开发算是完成了!比计划中的日期延后了差不多两个礼拜,除了一些乱七八遭的原因外,还是自己的开发效率并不够高,过程中也碰到了蛮多之前未考虑进来的细节~

还是总结下这段时间的工作及后续的一些安排吧~

Krdb

给krdb增加了通过mmap持久化的功能,krdb是有多个krtable构成,每个table代表了一种格式的输入数据源(定义不同渠道、不同类型的数据),而用户可以根据需要给这些输入数据定义基于单表的索引(表级索引)和贯穿多表的索引(库级索引)。这样便为后续多数据源、多统计维度的数据分析做好了数据准备~

这是我设计的mmap持久化文件的格式概览:

1
2
3
/* mmap file overview:
* |T_KRTable|T_KRFieldDef*iFieldCnt|T_Record*lSizeKeepValue|
*/

文件头是这张表的基本信息,接下来是这张表的域描述信息 ,最后是实际的记录存储。对应索引信息并没有存储在这里,而是需要程序在加载mmap文件时,自己建立~

阅读全文 »

当你看到:

1
2
3
((4%3+4*27/(10-2)) > 12.99)&&
(F_1 !@ {'shanghai','beijing','guangzhou',})&&
(S_3 ## [^S_*])||(D_1 @@ A_1);

你会有怎样的反应呢?

让我尝试着来翻译一下吧:
如果
判断条件一:运算式(4%3+427/(10-2)) 的值 大于 12.99
并且
判断条件二:流水第一个域(F_1,比如一笔交易流水的交易地点)的值 不属于 多值集合{‘shanghai’,’beijing’,’guangzhou’,}
并且
判断条件三:静态数据项3(S_3,比如为同卡片上笔交易的交易码)满足正则表达式 [^S_
]
或者
判断条件四:动态统计量1(D_1,比如半个小时内的交易次数) 属于 集合1

这便是我前段时间开发这段时间完善的一个简单的C版规则引擎,不过现在我更倾向与叫它计算器,因为在krproject里它不仅用来做规则运算,还会参与统计量和数据项的过滤条件运算,于是独立出来,取名为krcalc。

阅读全文 »

有一个多月没有写博了,这段时间除了一些日常的工作外,就是在设计规划和开发krproject,想给krproject一个明确一点的定位,这个系统或者这个项目到底是要做什么?

一句话总结是:基于大数据量的实时流数据分析系统

大数据量:这当然是个噱头了;

实时:不仅要求系统提供服务模式,还要保证系统处理的性能与效率;

:限制要求输入数据为流式,实际上如果去除物理存储的限制,我相信所有的数据库都会是流式的,记录随时间流逝所发生的一切,没有删除也不会更新,日志即记录~

数据分析:这一块考虑分成两个方向:一个是基于规则的;另一个是基于机器学习的。

我目前接触到的一些产品似乎都将人们的目光聚集在“数据分析”上了,实际上以我目前的理解,我觉得这样一个系统性能的关键并不在数据分析上,而是在数据分析前的数据准备上:怎样高效的组织存储输入数据和如何高效计算获取数据分析所需要的统计量。

机器学习我了解的还不是很多,粗浅的认为机器学习的输入数据不应该只是当笔的流水信息,这样首先很难对非数字类型的数据归一化,其次我觉得那样的训练模型应该很难满足数据挖掘或分析的要求,它也应该需要之前的数据准备和加工。

阅读全文 »