我的Python服务器接收包含要对其采取行动的项目列表的作业,而非搜索查询项;一个例子输入:解析复杂的查询参数
(Customer:24 OR Customer:25 OR (Group:NW NOT Customer:26))
所以将作业提交的时候,我必须分析这个收件人模式,解决所有这些匹配的客户,并使用该输入工作。
使问题复杂化,客户可以随时加入和离开组,并且在发生这种情况时应该实时更新工作。
因此,当组织改变成员资格时,我必须通知所有正在运行的工作(并且他们做他们的事情)。
如何最好解析,应用和存储(在我的RDBMS中)这种约束列表?
- 解析:
eval()
,手写的FSM吃字符,yacc/bison /?还是? - 应用:你将如何存储这些约束,并评估它们?
- 存储:在数据库中,每个项目有一个评估顺序和NOT/AND/OR操作字段的行;或作为一个blob?
客户24两次? OR意味着什么?谁在写这些东西,程序员或最终用户?要完成3个不同客户的工作,最终用户将写入1和2和3,程序员将写入c == 1或c == 2或c == 3。 “工作应该现场更新”是什么意思? “工作”包含什么?哪些部分需要更新? – 2010-05-27 06:34:53
这是一个错字,对不起 – Will 2010-05-27 07:36:30
我们都猜测这是一个错字。现在尝试回答这些问题。 – 2010-05-27 07:46:53