boblu wrote:
> I have a Lexicon model, and I want user to be able to create dynamic
> feature to every lexicon.
> 
> And I have a complicate search interface that let user search on every
> single feature (including the dynamic ones) belonged to Lexicon model.
> 
> I could have used a serialized text field to save all the dynamic
> information if they are not for searching.

You might still want to.  Perhaps you can write a routine that writes 
SQL queries that search through the YAML in the serialized field.  It's 
annoying, perhaps, but better than the alternative.
> 
> In case I want to let user search on all fields, I have created a
> DynamicField Model to hold all dynamically created features.
> 
> But imagine I have 1,000,000,000 lexicon, and if one create a dynamic
> feature for every lexicon, this will result creating 1,000,000,000
> rows in DynamicField model.
> 
> So the sql search function will become quite inefficient while a lot
> of dynamic features created.

That doesn't follow.  You'd have to search through a billion lexicon 
regardless.  Joining another table shouldn't decrease the efficiency too 
much, I think

> 
> Is there a better solution for this situation?
> 
> Which way should I take?
> 
> 1. searching for a better db design for dynamic fields
> 
> 2. try to tuning mysql(add cache fields, add index ...) with current
> db design

Your best bet here is probably 3: use a non-SQL database such as CouchDB 
or MongoDB.  If you do decide to stick with an SQL database, I recommend 
PostgreSQL -- it will probably deal better with your big tables.

Best,
--
Marnen Laibow-Koser
http://www.marnen.org
[email protected]
-- 
Posted via http://www.ruby-forum.com/.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to