Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>My recommendation:</p> <p>Allow properties to be marked as indexable. Have a smallish hard limit on number of indexable properties, and on columns per object. Have a large hard limit on total column types in all objects.</p> <p>Implement indexes as separate tables (one per index) joined with main table of data (main table has large unique key for object). (Index tables can then be created/dropped as required).</p> <p>Serialize the data, including the index columns, plus put the index propertoes in first class relational columns in their dedicated index tables. Use JSON instead of XML to save space in the table. Enforce short column name policy (or long display name and short stored name policy) to save space and increase performance.</p> <p>Use quarks for field identifiers (but only in the main engine to save RAM and speed some read operations -- don't rely on quark pointer comparison in all cases).</p> <p>My thought on your options:</p> <p>1 is a possible. Performance clearly will be lower than if field ID columns not stored.</p> <p>2 is a no in general DB engines not all happy about dynamic schema changes. But a possible yes if your DB engine is good at this.</p> <p>3 Possible.</p> <p>4 Yes though I'd use JSON.</p> <p>5 Seems like 4 only less optimized??</p> <p>6 Sounds good; would go with if happy to try something new and also if happy about reliability and performance but usually would want to go with more mainstream technology. I'd also like to reduce the number of engines involved in coordinating a transaction to less then would be true here.</p> <p><strong>Edit</strong>: But of course though I've recommened something there can be no general right answer here -- profile various data models and approaches with your data to see what runs best for your application.</p> <p><strong>Edit:</strong> Changed last edit wording.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload