Re: [ZODB-Dev] Proposal (version 2): cross database reference seat belt

2009-04-30 Thread Christian Theune
Hi,

On Tue, 2009-04-28 at 13:54 -0400, Jim Fulton wrote:
 Thanks again!
 
 (Note to everyone else, Shane and I discussed this on IRC, along with  
 another alternative that I'll mention below.)
 
 I like version 2 better than version 1.  I'd be inclined to simplify  
 and it and skip the configuration flag and simply publish an event any  
 time we see a cross-database reference when saving an object.
 
 Here's proposed solution 3. :)
 
 - We add a flag to disable new cross-database references unless they  
 are explicitly registered.
 - We add a connection method to register a reference:
 
   def registerCrossDatabaseReference(from_, to):
 Register a new cross-database reference from from_ to to.
 
 - We arrange that connections can recognize old cross-database  
 references.
 
 If someone accidentally creates a new reference and the flag is set,  
 then transaction will be aborted.
 
 An interim step, if we're in a hurry to get 3.9 out, is to simply add  
 the flag.  This would disallow cross-database references in new  
 applications.  These applications could still support multiple  
 databases by providing application-level traversal across databases.

I think I'm reading something incorrectly: is there an emphasis on
*new* applications? The flag would disallow the creation of
cross-database references for a given DB -- independent of whether the
app is new or old, right? Only depending on whether the application uses
a ZODB that has the feature and has it enabled. Right?

Otherwise, I'm +1.

Christian

-- 
Christian Theune · c...@gocept.com
gocept gmbh  co. kg · forsterstraße 29 · 06112 halle (saale) · germany
http://gocept.com · tel +49 345 1229889 7 · fax +49 345 1229889 1
Zope and Plone consulting and development


signature.asc
Description: This is a digitally signed message part
___
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

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


Re: [ZODB-Dev] Proposal (version 2): cross database reference seat belt

2009-04-30 Thread Laurence Rowe
Christian Theune wrote:
 Hi,
 
 On Tue, 2009-04-28 at 13:54 -0400, Jim Fulton wrote:
 Thanks again!

 (Note to everyone else, Shane and I discussed this on IRC, along with  
 another alternative that I'll mention below.)

 I like version 2 better than version 1.  I'd be inclined to simplify  
 and it and skip the configuration flag and simply publish an event any  
 time we see a cross-database reference when saving an object.

 Here's proposed solution 3. :)

 - We add a flag to disable new cross-database references unless they  
 are explicitly registered.
 - We add a connection method to register a reference:

   def registerCrossDatabaseReference(from_, to):
 Register a new cross-database reference from from_ to to.

 - We arrange that connections can recognize old cross-database  
 references.

 If someone accidentally creates a new reference and the flag is set,  
 then transaction will be aborted.

 An interim step, if we're in a hurry to get 3.9 out, is to simply add  
 the flag.  This would disallow cross-database references in new  
 applications.  These applications could still support multiple  
 databases by providing application-level traversal across databases.
 
 I think I'm reading something incorrectly: is there an emphasis on
 *new* applications? The flag would disallow the creation of
 cross-database references for a given DB -- independent of whether the
 app is new or old, right? Only depending on whether the application uses
 a ZODB that has the feature and has it enabled. Right?

I think the emphasis was on new versus existing cross-database references.

Laurence

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

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


Re: [ZODB-Dev] Proposal (version 2): cross database reference seat belt

2009-04-30 Thread Jim Fulton

On Apr 30, 2009, at 5:01 PM, Christian Theune wrote:

 Hi,

 On Tue, 2009-04-28 at 13:54 -0400, Jim Fulton wrote:
 Thanks again!

 (Note to everyone else, Shane and I discussed this on IRC, along with
 another alternative that I'll mention below.)

 I like version 2 better than version 1.  I'd be inclined to simplify
 and it and skip the configuration flag and simply publish an event  
 any
 time we see a cross-database reference when saving an object.

 Here's proposed solution 3. :)

 - We add a flag to disable new cross-database references unless they
 are explicitly registered.
 - We add a connection method to register a reference:

  def registerCrossDatabaseReference(from_, to):
Register a new cross-database reference from from_ to  
 to.

 - We arrange that connections can recognize old cross-database
 references.

 If someone accidentally creates a new reference and the flag is set,
 then transaction will be aborted.

 An interim step, if we're in a hurry to get 3.9 out, is to simply add
 the flag.  This would disallow cross-database references in new
 applications.  These applications could still support multiple
 databases by providing application-level traversal across databases.

 I think I'm reading something incorrectly: is there an emphasis on
 *new* applications?

No

 The flag would disallow the creation of
 cross-database references for a given DB -- independent of whether the
 app is new or old, right?

Right

 Only depending on whether the application uses
 a ZODB that has the feature and has it enabled. Right?

This is not a sentence. :)

The flag would disable implicit references (new or old).  When an  
object is being saved, if it has implicit cross-references, the save  
will fail.  The second and third bullets above provide a way to make  
explicit references.  I've implemented the first bullet.  There's a  
question of whether I need to implement the second 2 bullets for ZODB  
3.9.

Jim

--
Jim Fulton
Zope Corporation


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

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