> > But I think SQLite works GREAT for massively *multi-user* rich > internet apps > > as a local cache so clients can work in disconnected mode. > > Oh, absolutely. In fact, this is something I'm planning for in my own > app, and one of the reasons I chose SQLite. My app is a fat desktop app > that is single-user and saves its data to a local SQLite database. > However, there's a web service in place to sync up the local data with > the server, merging data smartly, etc. The server db is MySQL for other > reasons, but that doesn't really matter.
I never liked MySQL's dual GPL/commercial licensing, or the fact they farmed out their relational integrity to InnoDB (now owned by Oracle). PostgreSQL was always my open source RDBMS of choice. But I understand why people like and use MySQL. > So everyone (1 user to 1000's of users) can use the app locally, > disconnected if they wish, and the data changes eventually (immediately > if connected) make it to the server db. > > I can't think of a better db to use on the client machine than SQLite. > Me either. > I haven't delved into RESTful apps yet, but I've been > meaning to. They make sense to me on a lot of levels. All the crud operations are accounted for. Transactions are tricky though, and of course the "standards" in this area are a moving-target work-in-progress. But the nice thing about RESTful apps is that on the right platform they make issues like scalability, failover, etc., totally orthogonal, and any client that can make an HTTP request can consume them. Plus, I have developed an experiential hatred of SOAP and other XML-heavy, RPC-style web interfaces. REST makes the web fun again, and lets me build nice high-performance client apps that aren't in browsers, if I so choose. I hate HTML. > My app knows about the sqlite db, but the ui doesn't. IOW, the UI > gets/sets the data in the bizobj, the bizobj gets/sets with the db > abstraction layer in my app, and that layer actually does the SQLite > DML > and transaction commits. Sounds like a good design to me. > I think that once you get to the level of needing a db server, you > should just use one of the excellent ones already available > (PostgreSQL, > MySQL...) But I agree this would be possible and even fun to do. Yeah I guess but only so long as the direct data access is only allowed from an abstraction layer (a business logic layer, for example) -- heaven forbid directly from the client app itself. If you go the route you describe your only option for client app uniformity is stored procs, which can make sure the data integrity is maintained. This is especially important on MySQL when working with denormalized data sets that have whatever data integrity they do have turned off (or in MySQL's case, "not turned on" by using InnoDB). > Erlang is another technology I've been meaning to > take a look at. Although, I must say Python has served me well as my > general programming language of choice. I have had my fling with Python, but prefer Ruby on mostly aesthetical grounds. But Python is a fine language, whose value I appreciate. Neither one of them can come even horse-shoes-and-hand-grenades close to Erlang's capabilities when it comes to scalability, availability, robustness -- *specifically* when creating web services. For general-purpose programming Erlang has its issues (sucky support for regular expressions being one of the most annoying--though the latest release is starting to fix that). But Erlang's philosophy of share-nothing, declarative message-passing concurrency, backed by intelligent process supervision models in its OTP framework, makes sense and eliminates entire categories of bugs that plague most imperative languages where threading is managed by the OS and shared state requires ugly monsters like locks, semaphores, critical sections, monitors, etc., to prevent certain disaster. BTW, comparing yaws (a web server written in Erlang) to Apache (see http://www.sics.se/~joe/apachevsyaws.html) , you'll find that Erlang's strength in terms of massive scalability are no joke. On a commodity Linux box, it crushes Apache. Apache comes to its knees at about 4,000 concurrent requests (all OS threads); yaws on the same machine with the same request chugs along at 80,000 concurrent requests (all lightweight processes). I have independently verified this, and never looked back. Also, if you ever grok Erlang's bit syntax and pattern matching features, you'll feel suddenly and severely let down by most other languages you've ever learned. F# on .NET has pattern matching, but NOTHING on .NET can touch Erlang's lightweight threading. I hate IIS/ASP.NET as much as I hate HTML, though not just because of this. <sidebar> Incidentally, if you're not afraid of C, check out ProtoThreads (http://www.sics.se/~adam/pt/). My idealized script language (which I call "Muse") would combine Ruby and Python's syntactic ease-of-use with ProtoThreads and SQLite and probably a UI toolkit like FOX or wxWidgets in a way that makes it super easy to do what you're trying to do in Python with Dabo. I would perhaps like to explore integrating Dabo with RESTful data services implemented in Erlang--by which I mean generating proxy libraries for Python that can consume them in an OO way. </sidebar> When it comes to writing network protocols or consuming complex binary data, I can think of no language that can light a candle to Erlang. Having been built by a telecom company, this makes sense, but the applications of these two features alone in general purpose client-server network applications are Legion. Finally, Erlang's DBMS, Mnesia, is interesting in that you can store arbitrarily complex Erlang terms (which can represent entire object graphs) in a way that presents NO "impedance mismatch" between the language and the database--thus no ORM mapping is necessary, for instance. List comprehensions are used to specify queries, kind of like what LINQ "query comprehensions" do on .NET but, not as complicated (or slow). Mnesia is as blazing fast as SQlite and MySQL for simple inserts/updates/deletes. > I'm enjoying this discussion, but it is indeed [NF].\ Me too! Thanks for your interest and participation with me in it. :) - Bob > > Paul _______________________________________________ Post Messages to: [email protected] Subscription Maintenance: http://leafe.com/mailman/listinfo/profox OT-free version of this list: http://leafe.com/mailman/listinfo/profoxtech Searchable Archive: http://leafe.com/archives/search/profox This message: http://leafe.com/archives/byMID/profox/[EMAIL PROTECTED] ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.

