0

There is following scenario: I am working on one telecom based project which generates price for provided site details input.

Input is passed in the form of Excel sheet and corresponding output is displayed in gridview.

Output grid contains two dropdownlists which is populated based on site details. That means there is two dropdown in every row of gridview which is filled by hitting database

At present this tool is working fine for 200 sites,but now client wants to pass 10,000 sites from excel sheet as a input.

It will be very tedious job to hit database for 10,000 sites and it will slowdown the performance of the system.

I am using asp.net 3.5 using C# and database sql server 2008

Does anybody have solution for the best possible way to do this task?

painotpi
  • 6,894
  • 1
  • 37
  • 70
associate
  • 1
  • 2
  • Can you explain the setup of the data more explicitly? Is every drop-down list the same? If so then you only need to get the possible options once and just bind every list to them. It's not clear what you're doing. Maybe demonstrate it with (minimal) code? – David Jul 17 '12 at 11:48
  • Why you don't get all required details in one DB hit? – Shailesh Jul 17 '12 at 11:48
  • If the data doesn't change frequently (E.G., changes once a day) why not simply cache the data, removing the need for any database calls and no need to introduce any other MQ, Sharding, Clustering, Load Balancers, etc. – Kane Jul 17 '12 at 11:52
  • thanks gusys for your quick response.....Actully each row is dependent on passed site details(passed parameters in input) ...so value of ddl is not same.... – associate Jul 17 '12 at 11:53
  • Actully there are many fields in gridview but having single value...multiple values are displayed in ddl(i.e first ddl is dependent on postcode of UK ......there are so many address per postcode basis and second ddl having list of pops which is depend on adress in first dropdown).User select any value from ddl and click on Recalculate then corresonding details will be reflected in gridview. – associate Jul 17 '12 at 12:35

1 Answers1

0

Scalability is your key here.

You should utilize load balancing where possible, if you could make some process asynchronous then do it - using something like ActiveMQ or RabbitMQ this will stop UI Hangs.

Also consider having clustered DB Servers.

Your goal should always be to give the user feedback ASAP (async feedback), Guarantee work processing (Queue/Message system), handle lots of users (Load balancing).

Theres also a lot to be said for code optimization, have a look at your code and see if theres any areas you can "trim the fat" to speed things up.

John Mitchell
  • 9,653
  • 9
  • 57
  • 91
  • How does a cluster help this scenario? – Aaron Bertrand Jul 17 '12 at 12:03
  • @AaronBertrand A web cluster or a DB Cluster? A web cluster would allow more sites to use it concurrently, a DB cluster would allow two webservers to communicate to two different DBs and push information without as much restriction on network bandwith, to be merged in between the databases on their own terms rather than during the trasnfer of a large amount of data. – John Mitchell Jul 17 '12 at 12:06
  • 1
    That's not how a single-instance cluster works - it is for failover purposes, not for concurrent redundancy - you can only talk to an instance on the active node at any given time. You could set up a multi-instance cluster but then you'd have to deal with merging the data, and I'm not sure what that would buy you (performance-wise) compared to two separate, non-clustered instances doing the same thing. – Aaron Bertrand Jul 17 '12 at 12:08
  • @AaronBertrand I've removed the SQL Clustering section. – John Mitchell Jul 17 '12 at 12:12