Fog Creek Software
Discussion Board




ASP/Access or PHP/MySQL??

Hi,

I am a VB / ASP / Access programmer and need some advice whether this is a good idea. I am going to create a online lunch ordering website for a customer and going to use the following :

1. ASP
2. VBScript
3. Access 2000 (database)

I am estimating around 200 - 300 orders perday. Will ASP and Access2000 db be able to support this kind of load? It will have customer and orders records. No billing system is needed because this is a COD (cash on delivery) business, just info about customer and orders.

I read somewhere that for this kind of websites, it is better to use PHP and MySQL since MySQL is more able to handle multiusers compared to Access. Ihav e thought about it but since I don't have any experience in PHP/MySQL, it might take some time to learn it.

I have only one month to finish this website therefore learning PHP/MySQL will be another hurdle at this moment.

I just need some opinions on whether this ASP/Access2000 will be able to handle this kind of website.

Thanks in advance for all your feedback.

suhu
Wednesday, June 04, 2003

Access is limited to 64 simultaneus connections. I dont think this will be a problem though. If I remeber right, IIS can cache the DB connections and if so, many of the pages you write will probably just occupy them for milliseconds at a time.

Otherwise, you might use MySQL with ASP. I havent done that my self, but it should definatly be possible.  This is probably the best opition if you are worried about scalabillty. MySQL works very well for this type of application.

Eric DeBois
Wednesday, June 04, 2003

Access will hit the wall so hard and so quickly you'll be beside yourself. I suggest using a real database. Access doesn't scale! (or is that simply "Access doesn't!" :P  )

As for ASP v PHP, make the choice based on what you're most familiar with.

Arron Bates
Wednesday, June 04, 2003

Metabase might be interesting if you are going to use PHP.

"«Metabase » is the name of a package written in PHP language to provide an interface to SQL databases that is independent of the DBMS (DataBase Management System).

The package is able to interface seeminglessly with distinct DBMS by the means PHP driver classes. Many DBMS drivers have been developed and more are being deployed by Manuel Lemos and also third party developers. Here follows a few examples DBMS with available drivers: Oracle, ODBC, MySQL, PostgreSQL, Mini-SQL, etc.."

http://koivi.users.phpclasses.org/browse.html/package/20.html

I know it from http://www.binarycloud.com/ but binarycloud is not
production ready yet. It will hopefully be soon.

Fredrik Svensson
Wednesday, June 04, 2003

200 - 300 per *DAY*?

I admit I don't know ASP/Access at all, and PHP/MySQL only slightly, but I think you would be hard pressed to not be able to handle it.

Consider this: 300 orders in one minute make 5 per second. Way I figure, you shouldn't therefore be pushing more than say 15 queries per second (Totally random choice there). For customer info and product info queries, you should be running simple queries, as far as I can see.

I have done no tests at all, but unless you're doing something odd, you shouldn't need any query that'd take more time than that. I figure almost anything should be able to handle that load.

Mike Swieton
Wednesday, June 04, 2003

I think your better off with PHP/MySQL.

If you take the access route than in order to increaes in size your going to have to go to SQL Server, and the licensing can be expensive if your a small outfit.

Also, PHP is still supported by an active online community, whereas ASP has been replaced with ASP.Net.

Considering the Limitations of Access and the fact that ASP is deprecated I would say that PHP/MySQL is a better long term choice unless you only intend the site as a temporary measure.

PHP is also a much, much nicer language than VBScript.

Ged Byrne
Wednesday, June 04, 2003

Access will work fine. Unless everybody orders at the exact same time. But if your transactions are spread out over 24 hours, then you shouldn't really worry about it.

John Rosenberg
Wednesday, June 04, 2003

You can pick up a cheap hosting package that includes SQL Server (look for 7, might be cheaper), so i would use ASP with a SQL backend, I have never had any problems with Access but after the stories I hear I figure why risk it for a couple of extra bucks a month.

Ben
Wednesday, June 04, 2003

If you are doing 200-300 orders per day. You can save yourself a lot of trouble with PHP and ASP..and the performance gain of PHP (or arguably, ASP) would basically not as interesting as you think.

PHP and ASP only runs into trouble (after mad optimization) at 20-1400 concurrent ongoing-connections/connection accepts per SECOND. So multiplied by sixty seconds in a minute multiplied by.. you get the picture.

Just use something like IIS on a Windows 2000 Professional with Access 2000 (a pretty decent engine for your needs) box or RedHat with the LAMP installed, you'll be up and running in no time.

You could always pay $50 a month for someone to host the database-backed website for you. That's even better, if they back things up for you.

Li-fan Chen
Wednesday, June 04, 2003

"Access will work fine. Unless everybody orders at the exact same time."

Since this is a lunch ordering website - I'd expect to get a ton of traffic in the late morning and little at any other time. I'd stay *far* away from Access in this case.

Also, a PHP/mySQL solution has the benefit that hosting should be cheaper. If you compare Windows hosts v/s Unix (and Unix-like) hosts you'll see a price/features gap (due to both licensing fees and the level of hardware needed to run the software).

PHP is easy to learn and is well integrated with mySQL. A simple site shouldn't take that long to put together, even with learning the tools.

RocketJeff
Wednesday, June 04, 2003

With regards to performance. Access 2000 can point to either Jet Engine or MSDE (based on SQL Server 7.0--which is the father of Sql Server 2000)... you'll have to pay much much more for the privilage of using SS2000, but SS7 does so much and performs well enough for much much more load than what you are looking at. At 200 orders per day, (plus say lots of healthy views) .. even the default Jet engine might handle it.

Look up "Access 2000" and "MSDE" on google for information on how to choose the engine you want.

Li-fan Chen
Wednesday, June 04, 2003

"You could always pay $50 a month for someone to host the database-backed website for you. That's even better, if they back things up for you. "

$50/month is *way* too much for hosting this level of website - I'd look at the sub-$10 suppliers.  I use http://www.powweb.com for my hosting and it would handle the proposed site easily (if they went the PHP/mySQL route) and it's only $7.77/mo (650Mb disk, 45Gb transfer/month) with a one-time $10 fee to setup a mySQL database.

RocketJeff
Wednesday, June 04, 2003

"MSDE (based on SQL Server 7.0)"

Actually, MSDE 2000 is based on SQL Server 2000. It's legally usable from a web server. What you may run into the 5 concurrent connection limit. However, if you have connection pooling underneath (say, with ASP.NET) and your hits on the database are short, this is not a significant issue.

If you control the environment, I would take MSDE over Access every single time.

Brad Wilson (dotnetguy.techieswithcats.com)
Wednesday, June 04, 2003

I am talking about the old MSDE generally associated with Access 2000, that one is based on Sql Server 7.0 or 6.5 or something in between. Right, MSDE 2000 is a whole other thing. That one is basically a slightly crippled SQL Server 2000.

Li-fan Chen
Wednesday, June 04, 2003

Going with what you know is probably the way to go in this situation. It sounds like you don't have enough time to implement both and see which is better--it sounds like you're just gonna have to build one and hope it's enough, in which case the possible technical advantage of  PHP/MySQL would be outweighed by your lack of familiarity with those products, unless ASP/Access is woefully inadequate, which I doubt it is. Even if your 300 lunch orders come in over the course of one hour, that's still only 5 connections per minute. A $100 PII/400 with Windows 2000, IIS, and Access should be able to serve up one database-backed page every 12 seconds.

brian
Wednesday, June 04, 2003

You should definitely go with ASP/Access since it is more than adequate and (more importantly) is what you know. In the extremely rare event that you run into a problem (highly unlikely) you can relatively easily switch out the DB to MSDE.

pb
Wednesday, June 04, 2003

Dear Mr. Mr.

Today it occured to me that I favor what I know over what I don't know.  I have a fear of the unknown.  Therefore whenever someone asks me my opinion I give them what I know and I am biased toward that solution and condemn every other solution known to man.  Maybe someday I will learn to expand my horizons and not judge one solution from the other based solely on hear-say as this makes me look ignorant.  Unfortunately this will never happen because I'm an intellectual.

Thank you for patience and time.

Regards,

AnyMouse

P.S.  You think I'm joking.  I'm not.

AnyMouse
Wednesday, June 04, 2003

To the man with a hammer everything is a nail.

Gwyn
Wednesday, June 04, 2003

Let's say you are in a city serving lunch. And you have a take out order thing. Kinda like a online pizza thing. You'll get a lot of views that will need dynamic data even no one intends to order. And then you'll have that 200 orders to contend with. Unless you are able to have unlimited numbers of scooters and trucks to deliver these lunch and can make unlimited number of lunches--you'll want everyone even slightly interested to know if there are any lunch left to order. So you'll have to partition your browsable pages from your ordering form section and furthur partition your browsable pages into static verses dynamic pages. The static pages probably just describes the regular menu plus weekly/daily specials. The dynamic pages will show availability.

So people would click to the page.. 1) see the menu.. check to availability 2) to find out delivery readiness.. say learn that the estimated delivery time (if dynamically generated) is 60 minutes.. and to learn that the special is out for the day.. but plenty of Chicken Katsu and Teriyaki beef bentos are available--yum... 3) then click to order should any orders be left.

The point is.. the static pages will serve fine.. hundreds of hits won't matter because it never touches the Access 2000 database. The slightly dynamic pages (availability counts) don't matter much... especially if you use ADO.Command calling stored procedures and IN OUT parameters on a small status table (20 hits per second should be no problem with MSDE).. and the heavy weight order form shouldn't be a problem because you only get 200 hits a day anyway..

If you are running a delivery service handling hundreds of restaurants.. your requirement will differ a bit, but then you'll probably be running a server farm at that point.

Li-fan Chen
Wednesday, June 04, 2003

An easy, non technical thing that you could do to help solve this problem would be to go to the restaraunt and speak to the actual cashier.  Ask him/her what is the longest line they see during the day.  This will give you a crude approximation of the number of concurrent requests to expect. 

Additionally, 1 month sounds like a bit of tight time frame.  Remember that EVERYTHING takes longer to do than you would think.  If you only have experience with asp/access, do not underestimate the additional time learning a new language will take.  (As well as figuring out how to setup mysql/php)  This advice is coming from someone who HATES using microsoft technology and has written a bunch of sites in php/mysql.  I would definitely recommend learning php/mysql (they're not complicated at all), but don't risk it on a tight-deadline project if you don't have to.

mph
Wednesday, June 04, 2003

It is possible to write very simple portable SQL.  Keep away from fancy stuff.  Then it is relatively easy to change your backend database independant of the frontend.

ASP is fine if you're familiar with it.  PHP is nice, although without a good database abstraction layer like mentioned above, it is not so easy to change your database backend as I suggest.  Look too at Cold Fusion.  Very nice, and so simple you'll be amazed.

Nice
Wednesday, June 04, 2003

Learn new technologies and implement them in a month.  Are you sure you don't have a capital S on your chest?

Brian R.
Wednesday, June 04, 2003

He knows ASP & Access, picking up PHP and mySQL should take him a day - the technology isn't that different.

One one hand we have people wondering why companies only hire people who know specific things since it's easy to learn new technologies for the position while on the other we have people who don't think someone is capable of learning a very similar technology and makeing a simple website in a month.

RocketJeff
Wednesday, June 04, 2003

For what it's worth our college put its exam results on line by exporting the COBOL database to an Access data base and then using asp to send it to the web server.

At present we have about 3,000 students and they all will try and get their results witin a fairly small window; that is as soon as the first one finds the results are out he texts the news around and everyone's down to the Internet cafes. The student has to type in his ID to get the result, so there is some minimum amount of processing involved.

We now have a custom Oracle app, but I believe the marks still go up on the web by exporting to Access.

There have been problems with universities who post marks, but they have been bandwidth problems, not server problems.

The problem I see with the app is reducing the totals as individual orders come in. Might be an idea to advertise three or four meals less than there really are to avoid disappointments.

Stephen Jones
Wednesday, June 04, 2003

Access is fine when everybody is just reading the data.

It's when everybody is trying to WRITE to an access database that the fun starts.

For what it's worth, I'd suggest the original poster stick with ASP for the web stuff, but use a different database. You *can* call MySql from ASP as well.

PHP doesn't give you any real advantages over ASP anyway. It's the same processing model - pages are interpreted on each request. The HTML syntax is identical.

The only major differences are the syntax - VBScript/JavaScript for ASP, the PHP language for PHP, and that for addon functions, ASP used COM components, while utilities need to be compiled into the PHP interpreter.

Plus, of course, all the stupid minor details of where the server variables are, how to set up session state, etc. All those things that eat up time. I'd say stick with ASP, and switch DB engines.

Chris Tavares
Wednesday, June 04, 2003

"He knows ASP & Access, picking up PHP and mySQL should take him a day - the technology isn't that different."

I will believe that when I see it front of my wide- open eyes. 

Brian R.
Wednesday, June 04, 2003

Thanks for all the suggestions and feedback. I really appreaciate it.

suhu
Wednesday, June 04, 2003

"One one hand we have people wondering why companies only hire people who know specific things since it's easy to learn new technologies for the position while on the other we have people who don't think someone is capable of learning a very similar technology and makeing a simple website in a month. "

Based on everything the original poster said, he is a one-man operation.  I would assume that in addition to the actual programming, he also needs to handle the server installation.  Learning to program php/mysql is an entirely different thing from installing php and mysql, and getting it to a suitable state for production application deployment.  Coincidentally, at a previous job, I taught several other ASP programmers PHP, it's a very easy transition, but they had a working server, and was not under the gun of a tough deadline.  And yes, 1 month is a tight deadline.  Every programmer loves to think that everything can be magically done in a weekend, but producing a final version of software always takes time.  In an optimisitic scenario, you'll need two weeks to program this restaraunt site, a week to deal with the inevitiable changes the client wants, and another week to train and test this application.  (You're asking someone to run their already profitable business on your software, they might not be very tolerable of bugs)  It would be a foolish idea to throw learning a new platform to this 1 month project.  (Learn it afterwards). 

On one hand, we have people wondering why software is always late and programmers work 70 hour weeks, and on the other hand we have people who have no idea how to mitigate risk in a project plan.

hpm
Thursday, June 05, 2003

*  Recent Topics

*  Fog Creek Home