System for rating a service
A system for rating a service comprises a database and a charging engine. A first set of balance information is read from the database. The charging engine is for determining an update to the database based at least in part on the first set of balance information, and conditionally submitting the update to the database based at least in part on a condition that includes limits on changes to the first set of balance information that occurred after the reading of the first set of balance information.
1 . A system for rating a service, comprising:
a database from which a first set of information is read;
a charging engine for:
determining an update to the database based at least in part on the first set of balance information; and
conditionally submitting the update to the database based at least in part on a condition that includes limits on changes to the first set of balance information that occurred after the reading of the first set of balance information.
2 . A system as in claim 1 , wherein the limits on changes comprise any change to the first set of balances.
3 . A system as in claim 1 , wherein the limits on changes comprise any change to one or more of the first set of balances that lie outside a range of values.
4 . A system as in claim 1 , wherein the limits on changes comprise any change to one or more of the first set of balances that lie above an upper bound.
5 . A system as in claim 1 , wherein the limits on changes comprise any change to one or more of the first set of balances that lie below a lower bound.
6 . A system as in claim 1 , wherein the conditional submission comprises using a command that sets a value.
7 . A system as in claim 1 , wherein the conditional submission comprises using a command that adds a value.
8 . A system as in claim 1 , wherein the conditional submission comprises using a command that subtracts a value.
9 . A system as in claim 1 , wherein the condition is tested explicitly using one or more rating engine instructions to test the condition with respect to one or more data values stored in the database.
10 . A system as in claim 1 , wherein the condition is tested implicitly using a predetermined database instruction to the database that includes a conditional test before executing an operation.
11 . A system as in claim 1 , wherein the condition tests the state of the system to determine whether the state of the system is close enough for the transaction to be valid to the state when the transaction began processing.
12 . A database as in claim 1 , wherein the reading of the first set of information from the database is read without a read lock occurring in the database.
13 . A method for rating a service comprising:
reading a first set of balance information from a database;
determining an update to the database based at least in part on the first set of balance information; and
conditionally submitting the update to the database based at least in part on a condition that includes limits on changes to the first set of balance information that occurred after the reading of the first set of balance information.
14 . A method as in claim 13 , wherein the limits on changes comprise any change to the first set of balances.
15 . A method as in claim 13 , wherein the limits on changes comprise any change to one or more of the first set of balances that lie outside a range of values.
16 . A method as in claim 13 , wherein the limits on changes comprise any change to one or more of the first set of balances that lie above an upper bound.
17 . A method as in claim 13 , wherein the limits on changes comprise any change to one or more of the first set of balances that lie below a lower bound.
18 . A method as in claim 13 , wherein the conditional submission comprises using a command that sets a value.
19 . A method as in claim 13 , wherein the conditional submission comprises using a command that adds a value.
20 . A method as in claim 13 , wherein the conditional submission comprises using a command that subtracts a value.
21 . A method as in claim 13 , wherein the condition is tested explicitly using one or more rating engine instructions to test the condition with respect to one or more data values stored in the database.
22 . A method as in claim 13 , wherein the condition is tested implicitly using a predetermined database instruction to the database that includes a conditional test before executing an operation.
23 . A method as in claim 13 , wherein the condition tests the state of the system to determine whether the state of the system is close enough for the transaction to be valid to the state when the transaction began processing.
24 . A computer program product for rating a service, the computer program product being embodied in a computer readable storage medium and comprising computer instructions for:
reading a first set of balance information from a database;
determining an update to the database based at least in part on the first set of balance information; and
conditionally submitting the update to the database based at least in part on a condition that includes limits on changes to the first set of balance information that occurred after the reading of the first set of balance information.
25 . A system for committing a plurality of rating events comprising:
a charging engine
for receiving a first charging event;
for determining a first update to a value in a database based at least in part on the first charging event;
for receiving a second charging event;
for determining a second update to the value in the database based at least in part on the second charging event,
wherein the second update is dependent on the first update having occurred before the second update, and
wherein the second update occurs before the first update is committed; and
a commit engine
for ensuring that the first update is committed; and
for committing the second update no earlier than when the first update is committed.
26 . A method of committing a plurality of rating events comprising:
receiving a first charging event;
determining a first update to a value in a database based at least in part on the first charging event;
receiving a second charging event;
determining a second update to the value in the database based at least in part on the second charging event,
wherein the second update is dependent on the first update having occurred before the second update, and
wherein the second update occurs before the first update is committed;
ensuring that the first update is committed; and
committing the second update no earlier than when the first update is committed.
27 . A computer program product for committing a plurality of rating events, the computer program product being embodied in a computer readable storage medium and comprising computer instructions for:
receiving a first charging event;
determining a first update to a value in a database based at least in part on the first charging event;
receiving a second charging event;
determining a second update to the value in the database based at least in part on the second charging event,
wherein the second update is dependent on the first update having occurred before the second update, and
wherein the second update occurs before the first update is committed;
ensuring that the first update is committed; and
committing the second update no earlier than when the first update is committed.