Re: [ZODB-Dev] Any risk about foreign zodb references

2011-07-19 Thread Alexandre Garel
Le 18/07/2011 18:16, David Glick a écrit :
> On 7/18/11 9:08 AM, Alexandre Garel wrote:
>> Hello,
>>
>> We are building up an application where we use multiple zodb instances.
>> Indexation is done using solr.
>> zodb are served through zc.zodbwsgi. ZODB connections are set only
>> on-demand, upon traversal. Each zodb has its intid local utility. Each
>> object also has a uuid.
>>
>> I have a zodb with global parameters objects on /params and distinct
>> zodb as /foo /bar /baz and so on.
>> Objects in a zodb may reference objects of the same zodb or of /params.
>>
>> I have two possible strategies :
>>
>> - either store uuid of referenced objects and retrieve objects from solr
>> (which will give me a zodb name + intid of object)
>> - either directly reference the objects of /params
>>
>> Of course second option seems better and more natural.
>>
>> I read
>> http://svn.zope.org/ZODB/trunk/src/ZODB/tests/multidb.txt?rev=99605&view=markup
>> and using pdb on databases = request.environ['zodb.connection'] I can
>> see the zodb.databases map
>> which is ok. I also know that _p_oid is unique and _p_jar handled for
>> each object so I feel confident on this side.
>>
>> So before I dive into this, is this kind of cross-database reference
>> used on production applications. Is there any-risk or any trick to be
>> aware ?
> Using cross-database references can be treacherous, because the garbage
> collection that occurs when packing a ZODB the typical way is not aware
> of the cross-db references. So if there's an object in one db that is
> only referenced from a different db, it will get garbage-collected
> during packing. You can probably use
> http://pypi.python.org/pypi/zc.zodbdgc instead of standard packing to
> avoid that problem.

Thanks for the advice.

I normally won't fall in this case as my params objects are contained in 
parents and must exists even when all other zodb would not.

Thanks for your feedback.

-- 
Alex Garel



___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


Re: [ZODB-Dev] Any risk about foreign zodb references

2011-07-18 Thread David Glick
On 7/18/11 9:08 AM, Alexandre Garel wrote:
> Hello,
>
> We are building up an application where we use multiple zodb instances.
> Indexation is done using solr.
> zodb are served through zc.zodbwsgi. ZODB connections are set only
> on-demand, upon traversal. Each zodb has its intid local utility. Each
> object also has a uuid.
>
> I have a zodb with global parameters objects on /params and distinct
> zodb as /foo /bar /baz and so on.
> Objects in a zodb may reference objects of the same zodb or of /params.
>
> I have two possible strategies :
>
> - either store uuid of referenced objects and retrieve objects from solr
> (which will give me a zodb name + intid of object)
> - either directly reference the objects of /params
>
> Of course second option seems better and more natural.
>
> I read
> http://svn.zope.org/ZODB/trunk/src/ZODB/tests/multidb.txt?rev=99605&view=markup
> and using pdb on databases = request.environ['zodb.connection'] I can
> see the zodb.databases map
> which is ok. I also know that _p_oid is unique and _p_jar handled for
> each object so I feel confident on this side.
>
> So before I dive into this, is this kind of cross-database reference
> used on production applications. Is there any-risk or any trick to be
> aware ?
Using cross-database references can be treacherous, because the garbage 
collection that occurs when packing a ZODB the typical way is not aware 
of the cross-db references. So if there's an object in one db that is 
only referenced from a different db, it will get garbage-collected 
during packing. You can probably use 
http://pypi.python.org/pypi/zc.zodbdgc instead of standard packing to 
avoid that problem.


--  
David Glick
 Web Developer
 davidgl...@groundwire.org
 206.286.1235x32

Online tools and strategies for the environmental movement. 

Sign up for our newsletter: http://www.groundwire.org/email-capture


___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev


[ZODB-Dev] Any risk about foreign zodb references

2011-07-18 Thread Alexandre Garel
Hello,

We are building up an application where we use multiple zodb instances. 
Indexation is done using solr.
zodb are served through zc.zodbwsgi. ZODB connections are set only 
on-demand, upon traversal. Each zodb has its intid local utility. Each 
object also has a uuid.

I have a zodb with global parameters objects on /params and distinct 
zodb as /foo /bar /baz and so on.
Objects in a zodb may reference objects of the same zodb or of /params.

I have two possible strategies :

- either store uuid of referenced objects and retrieve objects from solr 
(which will give me a zodb name + intid of object)
- either directly reference the objects of /params

Of course second option seems better and more natural.

I read 
http://svn.zope.org/ZODB/trunk/src/ZODB/tests/multidb.txt?rev=99605&view=markup
and using pdb on databases = request.environ['zodb.connection'] I can 
see the zodb.databases map
which is ok. I also know that _p_oid is unique and _p_jar handled for 
each object so I feel confident on this side.

So before I dive into this, is this kind of cross-database reference 
used on production applications. Is there any-risk or any trick to be 
aware ?

Thanks in advance for any comment :-)

Alex

___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev