Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Re: OT: Scalable web application architecture

by Ryszard (Priest)
on Dec 07, 2005 at 11:54 UTC ( #514813=note: print w/replies, xml ) Need Help??

in reply to OT: Scalable web application architecture

You've not mentioned on what hardware you're running this system on either.

If you've got a "large" database on a "small" machine, you'll be wasting your time attempting to optomise it. Get another machine!

memory, is an order of magnitude faster than IO, so, if you can, cache your db in memory! Also indexes, create indexes for the most commonly hit items, or at least revise your indexing strategy

You say its an online reservation system, then say you cache your results. This prima facie sounds like a bad design IMO. I've got in my mind something like a hotel reservation system, which is an OLTP system. It doesnt make sense to me to cache results, as they have the chance of being immediately out of date.

That being said, if you're caching your result set, it is probably ok :-).

Have you thought of prerunning the most expensive queries periodically (and even perhaps on an offline copy) and using Cache::Cache ? its super quick and adds only a couple of lines to each module.

Its a work around for sure to a performance based problem, but its something you could get a good lot of milage from.

  • Comment on Re: OT: Scalable web application architecture

Replies are listed 'Best First'.
Re^2: OT: Scalable web application architecture
by badaiaqrandista (Pilgrim) on Dec 07, 2005 at 12:51 UTC

    It is running on a P3 machine with 1G RAM (I forgot the speed). The box is dedicated for MySQL server, so it's got all the resources to itself.

    Yes it is a hotel reservation system. It has a fairly complex rules to search for availability. Rooms have maximum capacity. Packages have minimum and maximum number of guests, there are also different special packages for valued guests, travel agents, online marketing referrals. Prices can have seasons and each season can have different prices for different room-package combination. There are more rules.

    Searching for availability must consider those variables. The results from these computation for a given date is stored in a so-called 'search cache', so the next search on the date don't need to do the computation again. The problem with this is that all search use this table, so it is havily read, but if its data isn't valid, it is updated/inserted, which makes it havily written as well.

    I am looking for suggestion to improve performance for a real time system like this and to hear what other monks think about my approach on the problem. Thanks a lot for reply.


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://514813]
[thezip]: Is there an analogy for '&' (ie. run commandline process in background) for Windows commandline?
[Corion]: thezip: start "some title" path\to\that\ application, but that will open another console window
[Corion]: thezip: If you want to confuse your users, use system(1, "that\\command" );, which will make Perl launch it in the background
[Corion]: That will keep the console window open even though the user can't type into it anymore
[thezip]: So I have a script that generates a log file. After script completion, I want tohave VIM open this logfile.
[thezip]: i don't get the command line "back" until I close VIM. No what I want to happen...
[thezip]: I currently don't have access to CYGWIN, else I'd just do a tail -f on the logfile.

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (11)
As of 2017-03-27 18:48 GMT
Find Nodes?
    Voting Booth?
    Should Pluto Get Its Planethood Back?

    Results (321 votes). Check out past polls.