Re: [ZODB-Dev] Plone in P2P using Zope over DHT

2011-01-06 Thread Aran Dunkley
Hi guys,

It's looking like Plone/ZODB would need too much modification and
testing at the current time to move in to P2P.

The most promising environment in our research so far are frameworks
built on the Squeak language which is used by the OpenCobalt project (a
P2P collaborative 3D world).

Thanks for all your feedback and advice, and happy new year :-)
Aran
___
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] Plone in P2P using Zope over DHT

2011-01-06 Thread Andreas Jung
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Aran Dunkley wrote:
 Hi guys,
 
 It's looking like Plone/ZODB would need too much modification and
 testing at the current time to move in to P2P.

Neither Plone nor ZODB require modifications. You need a cloud-aware
storage suitable to be used as ZODB storage.

- -aj
 
 The most promising environment in our research so far are frameworks
 built on the Squeak language which is used by the OpenCobalt project (a
 P2P collaborative 3D world).
 
 Thanks for all your feedback and advice, and happy new year :-)
 Aran
 ___
 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


- -- 
ZOPYX Limited   | zopyx group
Charlottenstr. 37/1 | The full-service network for Zope  Plone
D-72070 Tübingen| Produce  Publish
www.zopyx.com   | www.produce-and-publish.com
- 
E-Publishing, Python, Zope  Plone development, Consulting


-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.11 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQGUBAEBAgAGBQJNJi3GAAoJEADcfz7u4AZjNEsLv1afSBaHjYhQ5RqvcRuKOMXD
FVs/E6C/icI7FlzZmOAxKGT0PpDclT2mnfF7MuHBJJq1ITHI/wwVx4TCvDQeqJUZ
gIloUzzxp5S1JcNQLYuLJQewqIzfgpXE5spATEtv79GP/fYcEFeOCvcFyCUOxFb6
wIIhSokCoQhBDRiQPmZUIXEaBg2sjQ/kX0FEZzVnF1muuQpEHBOpASV9m9SbLKIr
rhScpv4DHdDggITRuQBAykYsIwqrbNA+DLL7MEAVmKCqmDZ2d+1m0ShtZeopiaDr
Twtz0LgpSI86NLeNoXgu1YGELZL6XGVqLqFhDWFZaWJwukZ/dq2UHGVUudxJ3yg6
N6TBsjEN9mXWp44rTFa8/odqPyJeMxEsLv79w0SaMF7HKV3jlWzuTQsdWu0IjKC5
N4Pmw2YiQk8mq3NGM2cP8aL6GYr8mGXwyVg7kGdKbSdnIDsGjvUZK6nlWiMiWT3z
aiLvdR8vtzl9GUxy6qVSOSHWPVqmqgs=
=m2nt
-END PGP SIGNATURE-
attachment: lists.vcf___
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] Plone in P2P using Zope over DHT

2011-01-04 Thread Aran Dunkley
Thanks for the feedback Vincent :-) it sounds like NEO is pretty close
to being SQL-free. As one of the NEO team, what are your thoughts on the
practicality of running Plone in a P2P environment with the latencies
experienced in standard DHT (such as for example those based on
Kademlia) implemtations?

On 04/01/11 22:27, Vincent Pelletier wrote:
 Hi.
 
 Le mardi 4 janvier 2011 07:18:34, Aran Dunkley a écrit :
 The problem is that it uses SQL for its indexing queries (they quote
 NoSQL as meaning Not only SQL). SQL cannot work in P2P space, but
 can be made to work on server-clusters.
 
 Yes, we use MySQL, and it bites us on both worlds actually:
 - in relational world, we irritate developers as we ask questions like why
   does InnoDB load a whole row when we just select primary key columns, which
   ends up with don't store blobs in mysql
 - in key-value world, because NoSQL using MySQL doesn't look consistent
 
 So, why do we use MySQL in NEO ?
 We use InnoDB as an efficient BTree implementation, which handles persistence.
 We use MySQL as a handy data definition language (NEO is still evolving, we 
 need an easy way to tweak table structure when a new feature requires it), 
 but 
 we don't need any transactional isolation (each MySQL process used for NEO is 
 accessed by only one process through one connection).
 We want to stop using MySQL  InnoDB in favour of leaner-and-meaner back-ends.
 I would especially like to try kyoto cabinet[1] in on-disk BTree mode, but it 
 requires more work than the existing MySQL adaptor and there are more urgent 
 tasks in NEO.
 
 Just as a proof-of-concept, NEO can use a Python BTree implementation as an 
 alternative (RAM-only) storage back-end. We use ZODB's BTree implementation, 
 which might look surprising as it's designed to be stored in a ZODB... But 
 they work just as well in-RAM, and that's all I needed for such proof-of-
 concept.
 
 [1] http://fallabs.com/kyotocabinet/
 
 Regards,

___
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] Plone in P2P using Zope over DHT

2011-01-04 Thread Matthias
Am 04.01.2011, 12:40 Uhr, schrieb Aran Dunkley a...@organicdesign.co.nz:

 Thanks for the feedback Vincent :-) it sounds like NEO is pretty close
 to being SQL-free. As one of the NEO team, what are your thoughts on the
 practicality of running Plone in a P2P environment with the latencies
 experienced in standard DHT (such as for example those based on
 Kademlia) implemtations?

Something which may be worthwhile and give you an impression what the  
storage backend does for a common operation would be to instrument the  
ZODB code a bit. Just look at the current FileStorage and add a few log()s  
into its load/store methods. Maybe there are other methods of interest,  
too. Hooking this shouldn't take long.

Then I suggest you generate (or maybe you already have) a well-sized plone  
to test on. Perform a typical request on a site and see what the storage  
is doing. This will give you a solid idea what the storage has to do.

My guess (and I mostly infer this from the zodb code I've looked at) is  
that you can get many storage read requests for something like searching  
the catalog. I guess this will happen, because you get a load() call for  
each BTree bucket that you are traversing. Maybe I am totally wrong of  
course :) However, instrumenting the storage will show.

You might also find there are certain hotspots (like the catalog).  
Depending on their size you could make your users download these  
completely from the cloud before being able to use them. This would reduce  
the number of small randomly-seeking requests a lot.

Another thing you need to consider is implementing the transaction  
functionality. I'm not sure how to do something like this in the cloud or  
even if it's possible at all (given certain performance limitations).

And finally, my experiences using P2P is that it takes a while to build up  
speed for a certain download. And client uplinks are not as fast your  
typical web server's uplink. Also firewalls seem to cause problems  
sometimes (maybe workable with NAT punching?).

Maybe all of this is feasible in your situation, but this depends heavily  
on your requirements, usage and goals. Doing some fast prototyping and  
contacting authors who already wrote papers (or better implementations) is  
probably the best way to get solid a solid idea.

-Matthias
___
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] Plone in P2P using Zope over DHT

2011-01-04 Thread Laurence Rowe
I'm not very optimistic about this I'm afraid. First the problems with
using Plone:

 * Plone relies heavily on its in ZODB indexes of all content
(portal_catalog). This means that every edit will change lots of
objects (without versioning ~15-20, most of which are in the
catalogue).

 * At least with archetypes a content object's data is spread over
multiple objects. (This should be better with Dexterity, though you
will still have multiple objects for locking and workflow)

 * If you use versioning you'll see ~ 100 objects changed in an edit.

 * Even loading the front-page will take a long time - In my
experiments writing an amazon s3 backend for ZODB the extra latency of
fetching each object was really noticeable.

But I'm not sure even a simpler ZODB CMS would be a good fit for a p2p DHT:

 * ZODB is transactional using two phase commit. With p2p latencies,
these commits will be horribly slow - all clients storing changed
objects would need to participate in the transaction.

 * Each client's object cache will need to know about invalidations, I
don't see any way of supplying these from a DHT.

I expect you'd have more success storing content items as single
content objects / pages in the DHT and then generating indexes based
on that. You'll need some way of storing parent - child relationships
between the content objects too, as updating a single list of children
object will be incredibly difficult to get right in a distributed
system.

Laurence


On 4 January 2011 11:40, Aran Dunkley a...@organicdesign.co.nz wrote:
 Thanks for the feedback Vincent :-) it sounds like NEO is pretty close
 to being SQL-free. As one of the NEO team, what are your thoughts on the
 practicality of running Plone in a P2P environment with the latencies
 experienced in standard DHT (such as for example those based on
 Kademlia) implemtations?

 On 04/01/11 22:27, Vincent Pelletier wrote:
 Hi.

 Le mardi 4 janvier 2011 07:18:34, Aran Dunkley a écrit :
 The problem is that it uses SQL for its indexing queries (they quote
 NoSQL as meaning Not only SQL). SQL cannot work in P2P space, but
 can be made to work on server-clusters.

 Yes, we use MySQL, and it bites us on both worlds actually:
 - in relational world, we irritate developers as we ask questions like why
   does InnoDB load a whole row when we just select primary key columns, 
 which
   ends up with don't store blobs in mysql
 - in key-value world, because NoSQL using MySQL doesn't look consistent

 So, why do we use MySQL in NEO ?
 We use InnoDB as an efficient BTree implementation, which handles 
 persistence.
 We use MySQL as a handy data definition language (NEO is still evolving, we
 need an easy way to tweak table structure when a new feature requires it), 
 but
 we don't need any transactional isolation (each MySQL process used for NEO is
 accessed by only one process through one connection).
 We want to stop using MySQL  InnoDB in favour of leaner-and-meaner 
 back-ends.
 I would especially like to try kyoto cabinet[1] in on-disk BTree mode, but it
 requires more work than the existing MySQL adaptor and there are more urgent
 tasks in NEO.

 Just as a proof-of-concept, NEO can use a Python BTree implementation as an
 alternative (RAM-only) storage back-end. We use ZODB's BTree implementation,
 which might look surprising as it's designed to be stored in a ZODB... But
 they work just as well in-RAM, and that's all I needed for such proof-of-
 concept.

 [1] http://fallabs.com/kyotocabinet/

 Regards,

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

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

___
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] Plone in P2P using Zope over DHT

2011-01-03 Thread Andreas Jung
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Aran Dunkley wrote:
 I'm
 wondering what you guys, the core developers, think of the
 practicalities of Plone in P2P, for example could ZODB use a DHT as its
 storage layer? what kind of querying is required on the DHT?

No idea what P2P means to you in particular.

The ZODB is a mandatory requirement for Plone as storage layer. You may
work on storage layer implementation for the ZODB fulfilling your
requirements (similar to Relstorage implementing a RDBMS backend for the
ZODB). I have strong doubts that a P2P or (cloud-ish) backend is
feasible as the ZODB is ACID compatible and ACID is basically something
you can not achieve in the cloud or better spoken in a highly
distributed environment.

- -aj


- -- 
ZOPYX Limited   | zopyx group
Charlottenstr. 37/1 | The full-service network for Zope  Plone
D-72070 Tübingen| Produce  Publish
www.zopyx.com   | www.produce-and-publish.com
- 
E-Publishing, Python, Zope  Plone development, Consulting


-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.11 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQGUBAEBAgAGBQJNIrFoAAoJEADcfz7u4AZjK7ELwKXWquWP4BuqEq5BNivjEQOy
F5FQZNSzTHtNlSLOjFNbQetcXm7ESRAUw/7Vu2o8Ds4a+J8KUMM8VkRVqr0I8oqm
EbjlDpD9m+tIWQXH5YhKP75r/QzjZ9iT1XrnZIH5q3nFyY48zCpJs1yrCGcIYORd
xJasPTjcWshArzT6lTu4XRnPNIZmyvw5JgW3LDu3SrlFOLj+NRY+wqVlXAk52SNK
YxwMvEn9LfKA6yL20uhUk7KkYeoQP0OZeQISV33SVjKLEMKU0UQYZTABfrcfmJgp
hlMiU652JUsn1VcQD+6w9TXJ0dOLpBgVWtuE8sIxviSZIu57UIbUdGOIEuNTXAt/
Mlnvp6W9gXGPLY7iU8QAeWZpPa4j+Nal+kFqVJo98ZI0I4dTo/cLd9H6OcECNbUF
LLsUHYE6uI/uOKlavM+uKLERBtoleKNYxu0EaF/ZtXSvGwiSQv1Wp+s6TgHoGLBR
Mq2THaTGogmHUOlAvJ7drk2oJP5UpYo=
=nQC8
-END PGP SIGNATURE-
attachment: lists.vcf___
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] Plone in P2P using Zope over DHT

2011-01-03 Thread Aran Dunkley
I mean P2P as in using a DHT (distributed hash table) for its storage
layer so that it can run in a network composed only of the client users
with no web-server, the same way that the file-sharing programs such as
azzureus and aMule work. We can develop a basic wiki/blog in this way,
but would prefer a mature CMS like Plone.

On 04/01/11 18:34, Andreas Jung wrote:
 Aran Dunkley wrote:
 I'm
 wondering what you guys, the core developers, think of the
 practicalities of Plone in P2P, for example could ZODB use a DHT as its
 storage layer? what kind of querying is required on the DHT?
 
 No idea what P2P means to you in particular.
 
 The ZODB is a mandatory requirement for Plone as storage layer. You may
 work on storage layer implementation for the ZODB fulfilling your
 requirements (similar to Relstorage implementing a RDBMS backend for the
 ZODB). I have strong doubts that a P2P or (cloud-ish) backend is
 feasible as the ZODB is ACID compatible and ACID is basically something
 you can not achieve in the cloud or better spoken in a highly
 distributed environment.
 
 -aj
 
 
___
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] Plone in P2P using Zope over DHT

2011-01-03 Thread Marc Villemade
Hey Andreas,

I don't know much about Aran's project, so you are right to wonder the 
necessity to have yet another storage backend.
Maybe he has needs and requirements that can't be fulfilled by the current 
backends.

Aran, can you fill us in a little on the necessity of having a DHT ? What are 
the requirements you're trying to fulfill for your project ?

Cheers

-Marc
@mastachand
http://linkd.in/heve30




On Jan 3, 2011, at 11:06 PM, Andreas Jung wrote:

 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1
 
 Marc Villemade wrote:
 Hey Andreas,
 
 I think it makes sense if the storage backend is hosted on-premise (hence 
 private cloud), and i think that's what Aran is thinking about.
 They could have Plone-ZODB-Storage backend in the same datacenter, hence 
 no latency problem and good network throughput, provided that the cloud 
 storage used is capable of offering high performance.
 
 
 First you should bring up arguments why the existing backends like ZEO,
 Relstorage or NEO are not good enough in your case. Looking at the
 development history of Relstorage or NEO: implementing an
 enterprise-level storage for the ZODB seems to be hard and
 time-consuming (and expensive).
 
 - -aj
 -BEGIN PGP SIGNATURE-
 Version: GnuPG v1.4.11 (Darwin)
 Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
 
 iQGUBAEBAgAGBQJNIsbnAAoJEADcfz7u4AZjcesLwMPmfuPkHoTWGOFHJ5SdUmQZ
 cYBpUmNjX6X1uDfoUC+oDQvXBJHQ0Us5kSk2u0KBhReBXF6oiLWT/zpB1EO7VgrJ
 IxaWXnVr5c/mFWGdyHq1ok0Mmyu0eprQ7sVc4pxhUi6V/1fpC6+W8yv1zpukCWIa
 ErBbozqSCoJ3XRgrlrl0ppwHeutVeOQsqMZmeq3mJ4OlfqDmjVfD5qupdAUybVDY
 mtKcEJPnvmyPM9ftKgr2yUULkit5knnH4xtbZHvk/kGgk/r3k4zEEi20TXtmn1/2
 Anjr3/GT54LvzZWb5qYcmnBbhmcERJulNjN7aWTJDXNH1QfaLuuI6afBH0iLAxjv
 o9jM8mWxFvjsob2QVRgC7uGSFesebXc/bhdl0oPWyJ2hX3jY5vwkbFt6XVDmvkdY
 OZOJiCcX2SLUhzmc669De2TCaTcl6szPhw0ZsHfZcwNLSusH276O4pFDoxxrKCAU
 pT1gKXVBNbX+m4ligYGBLRx+n++lrTg=
 =dOSV
 -END PGP SIGNATURE-
 lists.vcf

___
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] Plone in P2P using Zope over DHT

2011-01-03 Thread Aran Dunkley
I have looked at NEO which is the closest thing I've found to the
answer, in fact NEO is why I felt Plone was the best choice of CMS to
inquire further about

The problem is that it uses SQL for its indexing queries (they quote
NoSQL as meaning Not only SQL). SQL cannot work in P2P space, but
can be made to work on server-clusters.

We intend not to have any machines in our network other than the users
computers running the P2P application. So we would need to know exactly
what kinds of querying ZODB expects to be available in its interface to
the storage layer. DHT's can be slow for the first read but cache
locally after that.


On 04/01/11 20:06, Andreas Jung wrote:
 Marc Villemade wrote:
 Hey Andreas,
 
 I think it makes sense if the storage backend is hosted on-premise (hence 
 private cloud), and i think that's what Aran is thinking about.
 They could have Plone-ZODB-Storage backend in the same datacenter, hence 
 no latency problem and good network throughput, provided that the cloud 
 storage used is capable of offering high performance.
 
 
 First you should bring up arguments why the existing backends like ZEO,
 Relstorage or NEO are not good enough in your case. Looking at the
 development history of Relstorage or NEO: implementing an
 enterprise-level storage for the ZODB seems to be hard and
 time-consuming (and expensive).
 
 -aj
___
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] Plone in P2P using Zope over DHT

2011-01-03 Thread Andreas Jung
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Marc Villemade wrote:
 Hey Andreas,
 
 I don't know much about Aran's project, so you are right to wonder the 
 necessity to have yet another storage backend.
 Maybe he has needs and requirements that can't be fulfilled by the current 
 backends.


That's exactly the point: put the requirements on the desk and check
each of the existing storage backends against the requirements.
Then make a decision whether you really need a new storage
implementation or if there is a chance for using an existing solution
(or providing funding for feature extensions) or starting with a
complete a new project (taking possibly a long time (years) for becoming
mature enough for production).

- -aj
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.11 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQGUBAEBAgAGBQJNIspNAAoJEADcfz7u4AZjeqYLvi1UECuf5Zxp8JlrP51IDWtY
m4pNJzXJyAHKE/U0yFH2hcjJpVWZUQytu9XgiQj9ZASMgL/OLRIurl1O3RC4u5lc
yzq4qIKVR8oP2XAuTNpsq6jvAFgkoeLvxxLtks5L/YSxz9W/9+Gvm6zLFxjCVLde
L+H+vVViRUpdF9EeKp9TbSNVALIxs3lx5qREFoFsOhq43Potl7c846GGzwD/NKTb
W2++9WAlSh6vOPDBMMyDquO+MABehqLSOE6sQ297ZvcU9NJ2AtIzcr8IiHD6jSpA
Jft9yhAGqVt/oljUdTtNKayNxqJDWDSKNEI58q62TO6VMIa8xOTfVqxrWjnh4TOU
QfBHGxfPiGKVFaonCvBO+aQ72dlKhwR8t7yU4f3II99xeMYmUPNAEmJZcdkkd5M3
cuovoIDJSJVuwAPe/QI1h7oDqL7iIE2ZAMXL3T8g5LyXFp1NtvMsUc2gm6u3TgFL
va2S4Zb7axxB/2PiYeLZrJtyv1a3A6w=
=kf64
-END PGP SIGNATURE-
attachment: lists.vcf___
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