Topic: 【讨论】关于“直销佣金计算系统”

  Print this page

1.【讨论】关于“直销佣金计算系统” Copy to clipboard
Posted by: 太子
Posted on: 2002-07-16 12:12

我现在在帮某一家外资公司写着一个“直销佣金计算系统”,系统要求可以提供最少1百万用户注册,每个月大约1千万张交易的计算系统,其中涉及的计算法十分复杂,之前的系统在处理大约一样多的数据时,需要约三天的时间来完成,我在参考了过后,觉得融合今日的硬件,加上代码的优化,相信可以把时间缩短到少过两天,但是还是不能有很好的idea来对会员等级进行管理,所以想问问看,有谁试过类似的工程?或有谁有比较好的idea??我现在的做法是,每一个会员的记录里,都有一个是记录“上线”的格,和一个记录自己本身等级的格,那么比如我要知道A是谁,他的上线和下线有谁,他的佣金,他整个线的销售量等等,就通过这两个格来查,这么做,在用户数不多时,的确可以很快的完成处理,但是如果多到1百万左右时,就真的很慢了……!

如果你不知道什么是直销,你可能不明白我在讲什么,如果你知道,我倒真的希望你可以来一起讨论,解决这种梯级树链形的问题,到底有什么好办法?

2.回复: 【讨论】关于“直销佣金计算系统” [Re: 太子] Copy to clipboard
Posted by: Biubiu
Posted on: 2002-07-16 18:21

问题看起来不是很复杂,但是要花很多功夫去做。可惜我最近比较忙,不然可以帮你...

3.回复: 【讨论】关于“直销佣金计算系统” [Re: 太子] Copy to clipboard
Posted by: rainman
Posted on: 2002-07-17 03:17

直销和传销差不多么?

树状的结构的保存不是问题,按你的方法已经可以了。
但你要计算每条线是什么意思?
还有能否在计算过程中优化,保存中间结果?

4.回复: 【讨论】关于“直销佣金计算系统” [Re: 太子] Copy to clipboard
Posted by: C
Posted on: 2002-07-17 08:20

我想你是这样做的:
每个用户有一个id,“上级”字段记录上级的id,“级别”字段记录本身的级别(在树里的层次)。对么?

我会给“上级”字段加一个B-树索引。需要查某用户整个线的时候,用connect by子句挖出全部下级,同样再挖出上级。但是否应该分步完成,要实际测试一下效果。

销售量是怎么弄的?要连接交易event的表么?

PS. 上次在CCF有人说用什么"1000101"之类的编码,那样实在是不可行的。你怎么知道最终有多少个级别呢?表示级别的字符串长度没法确定,所以不可行。

5.回复: 【讨论】关于“直销佣金计算系统” [Re: 太子] Copy to clipboard
Posted by: 太子
Posted on: 2002-07-17 16:59

C老大这个办法确是可行,不过问题还是在“级别”储存方面,比如下图,E在第五组(最右)里是领头,可是在第一组里,他可是A的第四级下线!这个才是我最混乱的,不知有什么好的办法可以很好的管理会员等级?而且,会员的等级在理论上来说是没有限制的,它可能去到100代,也可能去到一万代!会员人数更是没有限制!嗯~~~~~~真是越来越头痛!

6.回复: 回复: 【讨论】关于“直销佣金计算系统” [Re: rainman] Copy to clipboard
Posted by: 太子
Posted on: 2002-07-17 17:04

rainman wrote:
直销和传销差不多么?

树状的结构的保存不是问题,按你的方法已经可以了。
但你要计算每条线是什么意思?
还有能否在计算过程中优化,保存中间结果?


每条线的意思就是“该会员的所有下属成员(无论几代)列表为整个家族线”。

计算过程优化,这个才是最重要的,不过该怎么优化,可是一个大问题。

现在是有保存中间结果的,每完成一位会员的计算,就会进行保存。

7.回复: 回复: 【讨论】关于“直销佣金计算系统” [Re: 太子] Copy to clipboard
Posted by: C
Posted on: 2002-07-17 23:20

太子 wrote:
而且,会员的等级在理论上来说是没有限制的,它可能去到100代,也可能去到一万代!会员人数更是没有限制!嗯~~~~~~真是越来越头痛!


omg,你的意思是树的级别还有交叉么(网状结构?!@_@)?不会说E既是D的下线,同时又是另一条支线上x的下线吧?

我的意思,存储的应该是绝对级别,就是该用户所处最低的级别。如你的表,如果A是最高级别的话,就是说E应该是第5级。后面的都是相对级别的问题。

你的那个表里面的是佣金的问题吧,那个是否应该是相对级别?相对级别可以用LEVEL伪列计算。比如说start with 'A',E的level就是5,start with 'B',E的level就是4……如此类推。或者在程序里控制也很简单的。

8.回复: 【讨论】关于“直销佣金计算系统” [Re: 太子] Copy to clipboard
Posted by: 太子
Posted on: 2002-07-18 16:35

不是的,每个人只会有一个上线,但是可以有无限的下线。

我现在选的办法是,每个会员表里只记录自己第一上头和上头的ID,和自己在该线里的等级,那么如果开始计算时,只找最大的等级数(也就是最低级的会员)开始,由下往上,相信这样可以减少重算的可能性,重而缩短时间,不过无论如何,第一轮只能够计算该会员自己本身的盈利,第二轮才能够根据第一轮的结果来计算整条线代的盈利。

btw,你的Level伪列计算是什么意思?

9.回复: 【讨论】关于“直销佣金计算系统” [Re: 太子] Copy to clipboard
Posted by: C
Posted on: 2002-07-18 22:21

看这里
http://otn.oracle.com/products/oracle9i/daily/jun18.html

10.回复: 回复: 【讨论】关于“直销佣金计算系统” [Re: C] Copy to clipboard
Posted by: wishmaster
Posted on: 2002-07-21 07:44

C wrote:
看这里
http://otn.oracle.com/products/oracle9i/daily/jun18.html


Does he have 9i configured?

Maybe he can use object-oriented design of ERD to get the data model right before doing the performance tuning.

11.回复: 【讨论】关于“直销佣金计算系统” [Re: 太子] Copy to clipboard
Posted by: C
Posted on: 2002-07-21 11:12

不是9i才有的,8i已经有拉,只不过9i允许表连接罢了。

第二句不明白在说什么。

12.回复: 【讨论】关于“直销佣金计算系统” [Re: 太子] Copy to clipboard
Posted by: coder
Posted on: 2002-07-21 19:32

C老大提供的方案很好,可以解决你的问题。
connect by很适合解决树形结构的检索,过滤也很方便

想更多的了解,可以看Oracle Press的oracle 8i pl/sql开发手册,有机械版的
从oracle 7.2就看到这个的啦

13.回复: 【讨论】关于“直销佣金计算系统” [Re: 太子] Copy to clipboard
Posted by: 太子
Posted on: 2002-08-09 14:53

可惜俺用的是MSSQL2000。呵呵!

14.回复: 回复: 【讨论】关于“直销佣金计算系统” [Re: 太子] Copy to clipboard
Posted by: C
Posted on: 2002-08-13 11:23

太子 wrote:
可惜俺用的是MSSQL2000。呵呵!


老大,connect by是标准的SQL语句呢。MSSQL2000号称完全支持ANSI-SQL92,应该也有才对。

15.回复: 【讨论】关于“直销佣金计算系统” [Re: 太子] Copy to clipboard
Posted by: itsyh
Posted on: 2002-08-16 21:36

我看现在的直销,都是有固定的多少层之内才能算是
你的下层的。
如果,这样的话,就好办多了。


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923