On Tue, Feb 23, 2010 at 03:43:42PM +0700, [email protected] wrote:
> Hi. There were some inquiries recently on how to get scripts using slave 
> databases, in order to reduce load on the master databases. I've taken this 
> opportunity to improve the syntax and write improved documentation. The new 
> documentation is in lib/canonical/launchpad/doc/db-policy.txt and is 
> reproduced below.
> 
> Storm Stores & Database Policies
> ================================
> 
> Launchpad has multiple master and slave databases. Changes to data are
> made on the master and replicated asynchronously to the slave
> databases. Slave databases will usually lag a few seconds behind their
> master. Under high load they may lag a few minutes behind, during
> maintenance they may lag a few hours behind and if things explode
> while admins are on holiday they may lag days behind.
> 
> If know your code needs to change data, or must have the latest posible
> information, you retrieve objects from the master databases that stores
> the data for your database class.
> 
>    >>> from canonical.launchpad.interfaces.lpstorm import IMasterStore
>    >>> from lp.registry.model.person import Person
>    >>> import transaction
> 
>    >>> writable_janitor = IMasterStore(Person).find(
>    ...     Person, Person.name == 'janitor').one()

All these examples deal with the Person class directly. A lot of scripts
use getUtility(IFooSet) to get security proxied objects. Can you give an
example of how that works?




-- 
Björn Tillenius | https://launchpad.net/~bjornt

_______________________________________________
Mailing list: https://launchpad.net/~launchpad-dev
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~launchpad-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to