Reputation: 35
I have a requirement to get results of search query within 1 second for a database table.The database table is returning results slowly at this point.A table has to be moved to a cache and searched from there so that search results come fast.I want to do google type page refresh on my existing search page -- which means the page should refresh as the user types.
In order to acheive this the search results should return within one second.My database is teradata.Its queries are taking 2 to 3 seconds at least.Hence i want to look for other options like caching.I want to use cache so that the resuls come fast.
Columns are
company , Id , Industry, parent ...4 more
Its a search page.So if user types "ja" all items starting from ja like
company ------------- Id ------------- Industry --------------parent
jaico ------------- 222 -------------paints ------------- Jaico asia
Jammy fruits------------- 232-------------food------------- jammy International
The table contains 3.2 million rows and there are 8 columns that are present.The search data need to return all 8 columns.Considering byte wise there are 150 chars per row.So total bytes are 3.2 million * 150 chars = 480 Megabytes .I need to store this much data in cache and then fire search queries like sql (grouping ,like ,order by) across them.What would be the best option to use in this case
Please suggest which option is good .Is it better to do caching in memory or to use lucene?
What need to be cached?--> It is a table of 3.2 million rows with 8 columns.
Why it is to be cached?--> It is to be cached so that search results come faster than sql query.If i use sql query it takes very long time.Hence i want to move towards caching data.
Upvotes: 1
Views: 469
Reputation: 1208
Take a look at Apache Solr - you can get that kind of performance with the right deployment. You can shard to distribute queries, for one thing.
Upvotes: 2