Design data-storage / search
Hi all, I have a design question. I'm using the CMF, but my questions are not specific for CMF, so I post it in this generic group. I want to construct a CMF content object, which contains a questionary of about 50 questions. Some require a free-text answer, others are multiple-response- or singe-response answers. Sometimes a combination is used ("please enter your motiviation here"). The answers of this questionary should be searchable. The standard way (?) that comes to my mind is to construct a portal_catalog with a rather large index of more than 50 keys. But I'm wondering if this is the optimal solution for this kind of data. Should I use a database or another kind of datastorage for these kind of data-structures? Tinytables? Maybe I should construct a special catalog for this, so the portal_catalog does not become inefficient? Any thoughts and experience on this kind of subject is highly appreciated. Thanks in advance, greetings, Antwan. Antwan Reijnen DEXUS New Media Metropole Office Laan van Meerdervoort 70 2517 AN Den Haag Tel 070-3114800 Fax 070-3656279 http://www.dexus.nl DEXUS New Media maakt deel uit van de Metropole IT Group http://www.metropole-it.nl ICQ#: 7916222
On Mon, 2002-03-25 at 13:07, Antwan Reijnen wrote:
Hi all,
I have a design question. I'm using the CMF, but my questions are not specific for CMF, so I post it in this generic group.
I want to construct a CMF content object, which contains a questionary of about 50 questions. Some require a free-text answer, others are multiple-response- or singe-response answers. Sometimes a combination is used ("please enter your motiviation here").
The answers of this questionary should be searchable. The standard way (?) that comes to my mind is to construct a portal_catalog with a rather large index of more than 50 keys.
But I'm wondering if this is the optimal solution for this kind of data. Should I use a database or another kind of datastorage for these kind of data-structures? Tinytables?
Maybe I should construct a special catalog for this, so the portal_catalog does not become inefficient?
Any thoughts and experience on this kind of subject is highly appreciated.
I am switching from DTML to ZPT/CMF (damn that peer pressure!) and started originally by dumping all this data in a normalized RDBMS (postgres). I have since decided there must be a better way, as searching (within zope, at least) becomes a "search here first, then there, then again over there" kind of operation. Not too efficient. I too am looking for the Right Way(TM) to do it, and hope this list is the means for you and I to find out... But I'm just now coming to grips that everything does not need to be in a RDBMS! Oh the horror! How should we do this in ZODB? For example, what if each 'questionnaire' has 500 questions in 5 categories, and each 'questionnaire' can be built from a different/random combination of categories? Does this have any impact on how it should be done in ZODB? -- Mitch Pirtle Corporate Security Officer Kühne & Nagel Management AG Tel: +41 1 786 96 45 Fax: +41 1 786 95 95
But I'm just now coming to grips that everything does not need to be in a RDBMS! Oh the horror! How should we do this in ZODB? For example, what if each 'questionnaire' has 500 questions in 5 categories, and each 'questionnaire' can be built from a different/random combination of categories? Does this have any impact on how it should be done in ZODB?
Or maybe here is another way of asking the question -;^>= Imagine, if you will, having a questionnaire. This questionnaire is comprised of N sections, with each section providing its own variable list of questions. Each answer to a question must be: Yes, No, or N/A with a comment. When a question is replaced with a newly worded question, it must still have some sort of pointer to the original question that it was created from. ----------------------------------------------------------------------- Question #17: "What is your favorite food?" - becomes - Question #73" "What is your favorite cooked food?" ----------------------------------------------------------------------- For example, what if I wanted to see everyone that answered "Stromboli", regardless of whether they answered the newer questionnaire (with #73) or the old one (#17). The answer would still be valid, just the wording of the question was changed. The relational model can attack this problem from several angles, and I am comfortable with how I am doing that. But even that relational data will need multiple passes to get one list of results (get answers, loop over questions from each previous version, get those answers too, etc.). Ok, *NOW* answer how this can also be done in a search-friendly manner. (evil grin) -- Mitch Pirtle Corporate Security Officer Kühne & Nagel Management AG Tel: +41 1 786 96 45 Fax: +41 1 786 95 95
participants (2)
-
Antwan Reijnen -
Mitch Pirtle