views:

765

answers:

3

I took this from another question I had.

Under appropriate uses for sqlite it has:

Situations Where SQLite Works Well

•Websites

SQLite usually will work great as the database engine for low to medium traffic websites (which is to say, 99.9% of all websites). The amount of web traffic that SQLite can handle depends, of course, on how heavily the website uses its database. Generally speaking, any site that gets fewer than 100K hits/day should work fine with SQLite. The 100K hits/day figure is a conservative estimate, not a hard upper bound. SQLite has been demonstrated to work with 10 times that amount of traffic.

Situations Where Another RDBMS May Work Better

•Client/Server Applications

If you have many client programs accessing a common database over a network, you should consider using a client/server database engine instead of SQLite. SQLite will work over a network filesystem, but because of the latency associated with most network filesystems, performance will not be great. Also, the file locking logic of many network filesystems implementation contains bugs (on both Unix and Windows). If file locking does not work like it should, it might be possible for two or more client programs to modify the same part of the same database at the same time, resulting in database corruption. Because this problem results from bugs in the underlying filesystem implementation, there is nothing SQLite can do to prevent it.

A good rule of thumb is that you should avoid using SQLite in situations where the same database will be accessed simultaneously from many computers over a network filesystem.


My Question:

I'm going to show my ignorance here but what is the difference between these two?

+3  A: 

"web" applications imply the browser is the client

Client/Server apps imply a custom client app. Think Outlook hooked up to exchange, while it may use the web to connect, it is its own client to the exchange server.

EDIT:

More specific to the sqlite text you posted, what they mean is that client applications shouldn't be accesing your sqllite DB directly, and instead should be using some sort of server side interface (i.e. an xml web service)

But that rule of thumb, in my opinion, applies to ALL database engines. If I were using SQL Server or Oracle, I would DEFINIETLY avoid having client apps connect directly to the DB, this has many potential problems, the first being security.

Neil N
sane DB servers have far better security frameworks than any custom webapp
Javier
Javier I think you are missing the point. For a client app to connect to a DB directly, it needs a login to that DB, which means login credentials (no matter how restriceted that login may be) are still stored client side, which is a big no no
Neil N
No sane DBA would allow a coder to put a db login in a client side app.
Neil N
+2  A: 

A "Web Application" is one in which a browser is commonly used as the client. A Web application IS A Client/Server Application. In other words, you could think of a client/server application as a superclass, where the web application is a child class.

hmcclungiii
+2  A: 

There are a few differences of note:

Web Applications assume the client is a web browser and that communication between the client and server is stateless (HTTP). It also tends to assume that the client is "thin" and very little processing of information is done in the browser.

Client-Server Applications assume the client is a "thick" client and that communication between the client and server maintains state (this isn't necessarily true). Communication can be pretty much any protocol. The old-fashioned client-server, or 2-tier application does have each client connect to the database directly - I would advise against this for various reasons, number one being security. This is probably what the source you posted meant when saying SQLite isn't appropriate.

A 3+tier type of application could still have a with-state client-server communication, but the middle-tier would handle the actual database communication. In this case, latency on the network isn't important and SQLite could work (because it is more like a web app).

Technical Bard
What does you mean "maintains state" in the second paragraph?
johnny