Can you please give an overview of Spear?--sounds cool, but not sure what it is/does...is it a custom content creation utility without the overhead of Archetypes?<br><br><div class="gmail_quote">On Wed, Jan 7, 2009 at 3:26 AM, Souheil CHELFOUH <span dir="ltr">&lt;<a href="mailto:trollfot@gmail.com">trollfot@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">You can also check the project i&#39;m working on, Spear, for lightweight<br>
and already working content type mini framework<br>
<a href="http://tracker.trollfot.org/browser/projects/spear.example/trunk/spear/example" target="_blank">http://tracker.trollfot.org/browser/projects/spear.example/trunk/spear/example</a><br>
<br>
2009/1/5 Mikko Ohtamaa &lt;<a href="mailto:mikko%2Bplone@redinnovation.com">mikko+plone@redinnovation.com</a>&gt;:<br>
<div><div></div><div class="Wj3C7c">&gt;<br>
&gt;<br>
&gt;<br>
&gt; Andreas Jung wrote:<br>
&gt;&gt; On 05.01.2009 14:04 Uhr, Martin Aspeli wrote:<br>
&gt;&gt;&gt; Mikko Ohtamaa wrote:<br>
&gt;&gt;&gt;&gt; Hi,<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; We are facing a problem where we need to store 270 fields per item. The<br>
&gt;&gt;&gt;&gt; fields are laboratory measurements of a patient - 40 measurement<br>
&gt;&gt;&gt;&gt; values for<br>
&gt;&gt;&gt;&gt; 7 timepoint. The fields need to be accessed per timepoint, per<br>
&gt;&gt;&gt;&gt; measurement<br>
&gt;&gt;&gt;&gt; and all fields for one patient once. There will be over 10000 patients,<br>
&gt;&gt;&gt;&gt; distributed under different hospital items (tree-like, for permission<br>
&gt;&gt;&gt;&gt; reasons). Data is not accessed for two patients at once, so we don&#39;t<br>
&gt;&gt;&gt;&gt; need to<br>
&gt;&gt;&gt;&gt; scale the catalog.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; So I am curious about how we make Plone scale well for this scenario.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; - The overhead of a field in AT schema? Should we use normal storage<br>
&gt;&gt;&gt;&gt; backend<br>
&gt;&gt;&gt;&gt; (Python object value) or can we compress or field values into<br>
&gt;&gt;&gt;&gt; list/dict to<br>
&gt;&gt;&gt;&gt; make it faster using a custom storage backend.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; - The wake up overhead of AT object? Should we distribute our fields to<br>
&gt;&gt;&gt;&gt; several ZODB objects e.g. per timepoint, or just stick all values to one<br>
&gt;&gt;&gt;&gt; ZODB objects. All fields per patient are needed on some views once.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; - One big Zope objects vs. few smaller Zope objects?<br>
&gt;&gt;&gt; I wouldn&#39;t store this in the ZODB, at least not only in the ZODB. Values<br>
&gt;&gt;&gt; like this are better stored in an RDBMS, modelled e.g. with a 40-column<br>
&gt;&gt;&gt; table (ick) used 7 times (one for each time point) for each patient.<br>
&gt;&gt;<br>
&gt;&gt; This is possibly ovehead - especially with collective.tin. Storing the<br>
&gt;&gt; data within some BTree datastructure should scale fine and requires a<br>
&gt;&gt; lot less effort than using collective tin.<br>
&gt;<br>
&gt;&gt;True. I was assuming he would need more complex data querying, though.<br>
&gt;&gt;Anything that requires non-trivial joins is probably better served by an<br>
&gt;&gt;RDMBS backend and SQL.<br>
&gt;<br>
&gt; First thank you for everyone for very insightful replies!<br>
&gt;<br>
&gt; I can fill in few gaps and have few more questions:<br>
&gt;<br>
&gt; - Archetypes is used as a generic framework to provide function structures,<br>
&gt; but all view and edit pages will be customized in any case - we are not<br>
&gt; going to dump the whole schema on the edit page once - the generated HTML<br>
&gt; and widget code will be optimized later on.<br>
&gt;<br>
&gt; - We will use ore.contentmirror to mirror the data to SQL database for data<br>
&gt; mining. We don&#39;t need real-time mirroring or real time queries, thus the<br>
&gt; cataloging is not an issue<br>
&gt;<br>
&gt; - Objects are mostly write-once - data shouldn&#39;t need to be changed unless<br>
&gt; there has been an input error<br>
&gt;<br>
&gt; - We are probably going to split data to objects based by timepoints, as<br>
&gt; suggested<br>
&gt;<br>
&gt; - *Is it still desirable to have 7 smaller ZODB objects than one big<br>
&gt; object*? What is &quot;the breaking point&quot; of schema when AttributeStorage falls<br>
&gt; apart? We need to query 7 ZODB objects to the patient main view to render<br>
&gt; the table containing the patient summary data.<br>
&gt;<br>
&gt; - What should we keep in mind if we indent to replace AttributeStorage with<br>
&gt; a custom BTreeStorage?<br>
&gt;<br>
&gt; Cheers,<br>
&gt; Mikko<br>
&gt; --<br>
&gt; View this message in context: <a href="http://n2.nabble.com/The-most-efficient-way-to-store-270-AT-fields--tp2112645p2112902.html" target="_blank">http://n2.nabble.com/The-most-efficient-way-to-store-270-AT-fields--tp2112645p2112902.html</a><br>

&gt; Sent from the Product Developers mailing list archive at Nabble.com.<br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Product-Developers mailing list<br>
&gt; <a href="mailto:Product-Developers@lists.plone.org">Product-Developers@lists.plone.org</a><br>
&gt; <a href="http://lists.plone.org/mailman/listinfo/product-developers" target="_blank">http://lists.plone.org/mailman/listinfo/product-developers</a><br>
&gt;<br>
<br>
_______________________________________________<br>
Product-Developers mailing list<br>
<a href="mailto:Product-Developers@lists.plone.org">Product-Developers@lists.plone.org</a><br>
<a href="http://lists.plone.org/mailman/listinfo/product-developers" target="_blank">http://lists.plone.org/mailman/listinfo/product-developers</a><br>
</div></div></blockquote></div><br>