In a previous post about ExtJS I mentioned the possibility of developing a web application that runs entirely inside the browser and doesn't require any server side code. The idea stems from a) ExtJS is a fully capable widget framework and b) CouchDB is accessible via a web service. At least 80% of web apps are just a HTML interface with a database back-end and a little bit of business logic. So why can't we move all that business logic to the browser, setup calls to a CouchDB web service from the browser and 86 the server-side code? In this post I'm going to analyze this question and see if it's realistic. In a follow up post I'm going to analyze this same question from a business standpoint.
A Database Void of Schema
CouchDB is a document oriented database, meaning that it doesn't have tables and keys like you do in relational databases. It just has one big space full of documents. A document in CouchDB is a JSON object, so its attribute values can be strings, booleans, numbers, lists, or other objects (documents). Having complex "rows" means that many of your relationships that you would normally form by using a second table and a primary-foreign key set is simplified down to embedding a list. Consequently, 1-to-1 and 1-to-many relationships are native to the database and require no extra thought or planning. Many-to-many relationships are more complicated, so this approach might break down if you require too many of these. Some other oddities in relational databases like versioning and pivot tables come native with CouchDB. Since the bulk of our database requirements are made easier with CouchDB, querying is going to be generally simpler.
But What About Performance?
At some point, someone's going to ask it. I say, Twitter uses it, they seem to be doing well, there's one case that its proven itself. The biggest argument for CouchDB being a scalable database is the fact that it is built from the ground up with the intent of being distributed across many nodes in a cloud. So while it is easy to get a database stood up for development, it's just as easy to move that database into a highly distributed cloud with hundreds of nodes. This makes it easy to develop scalable world-class apps like Twitter or Google.
What About Security?
The big difference with designing security into couch apps is that security is going to be built into the database instead of the application. CouchDB provides constructs for users to be part of roles. If constructed well, the developer can leverage the database to deny or allow certain operations for the current user.
Taking the Ext + CouchDB approach is going to be a fundamental shift in application design. If we learned to write apps like this we might actually learn to rely on the framework to do what it does best, and let our app do only what it needs to do. We might even find ourselves making stable and secure apps in less time.
From a technical perspective, I think this might be a very feasible design paradigm. In a coming post I am going to talk about the business costs involved. However, I think document oriented databases might be something I want to investigate further and design into future applications.
lòng hắn, luôn luôn tồn tại.ReplyDelete
- Đa tạ !
Vương Lâm bình tĩnh nói, hồi tưởng lại vị trí của Tàng Phẩm Các trong trí nhớ của lão già kia. Vương Lâm thay đổi phương hướng, nguyên lực trong cơ thể tản ra, cùng với Lý đồng tâm
cho thuê phòng trọ
cho thuê phòng trọ
nhạc sàn cực mạnh
tổng đài tư vấn luật miễn phí
văn phòng luật
số điện thoại tư vấn luật
thành lập công ty
Nguyên với tốc độ cực nhanh bay đi trong hư vô.
- Trong trí nhớ của lão già kia, tại Tàng Phẩm Các có phong ấn do tứ đại gia tộc kết hợp tạo thành, nếu không có người của tứ đại gia tộc, không thể đi vào. Hy vọng Lý Nguyên có thể giải trừ cấm chế phong ấn này !
Trong lòng Vương Lâm thầm nhủ.
Dưới nguyên lực của Vương Lâm tràn ngập, hai người hóa thành một đạo cầu vồng, lóe lên trong hư vô, không đi tới một mảnh vỡ đại lục nào mà hướng về vị trí trung tâm phần lớn mảnh vỡ trên Lôi Tiên Giới, không ngừng tiến tới gần.
- Cực Cảnh ! Bị phong ấn bên trong cơn lốc xoáy ngũ sắc rốt cuộc là ai, sao lại có thể có được Cực Cảnh !