Skip to main content

Amazon's RDS - Performance?

Majoriy of the typical application design warrants an Application server and database servers. The application servers interact with database server instance using connection/pooled connections. The interaction between app server and database server is highly I/O intensive and performance is good when these two instances(App server and DB) are on the same physical server or atleast better when they are on same LAN.
Is it advisable having to rely on Relational Database Services from Amazon and an appserver running elsewhere?
May be if the application runs on EC2 cloud and access Relational Database Services, it offers required performance. However, if we consider a small application, paying 11cents/hr for an EC2 instance and another 11 cents/hr for an RDS instance may be an expensive affair.

If it is expensive for small applications what are the other scenarios where one can benifit from Amazon's Relational Database as Service?
1) If the application is a Client-Server based? (If the client is accessing DB over a WAN)
2) Requires backup storage for any OLTP applications.
3) For OLAP applications?

Though Amazon and Google are held as competitors in the cloud space, I believe Google's App Engine approach to cloud computing is far better and leaves the competition far behind. The approach itself is different where it offers a application server and a persistance layer with absolutely zero configuration requirements. Google's persistance layer "bigtable" is a problem for "Relational Database" lovers. Amazon, with its huge infracture and R&D team, could offer a simiar package - may be with Tomcat and MySQL, most widely used combination among small application developers. (Lately being adopted at enterprise level applications as well).

Comments

Popular posts from this blog

Grails - cross-field Date validation

Often we run into domain classes with date fields. If the domain class has two datefields, startDate and endDate, and the rule for a valid combination is "endDate to be greater than startDate", how do we handle? I listed below two of the options, either using domain level constraints or using the domain classes. Option 1: Using domain constraints. Let us take a sample Grails Domain class class Student{ String name String school Date startDate Date endDate } Add the following constraints to enforce validation rules where name, school, startDate cannot be blank and endDate if present should be greater than startDate.

Grails - Querying complex associations

Criteria class allows performing complex searches on grails objects. There are number of shortcut methods for performing queries but these methods have limitations in terms of number of conditions used in "where clauses". Traditional sql "joins" are not possible as shown in some of the Grails "Finder" methods shown below. Sample 1: def list = AccountTransaction.findAllByCompanyCodeAndVoucherDateBetween(branch, fromDate, toDate, params) Sample 2: def list = AccountTransaction.findAllByCompanyCodeAndVoucherDateGreaterThanEquals(branch, fromDate, params) Sample 3: def list = AccountTransaction.findAllByCompanyCodeAndTransGroup(branch, group, params) "params" contains attributes related to sorting, paging etc. It is very easy to use finder methods but when you want to filter objects by more conditions we need to look for alternatives. For understanding the relationships used in this sample, I listed the grails domain classes. class TransactionTyp

Implementing advanced sort in Grails

The "list" pages generated by inbuilt scaffolding/template features of grails have pagination and sorting features. However, if the domain object displayed in the list is a nested object having another domain object as a property, you may notice that sort is not enabled for that field. Boiler plate code for the header of the list is shown below. As you would have noticed few columns have sortable columns automatically generated by Grails command, generate-all or generate-views. The properties 'partyAccount' and 'bankAccount' in this sample are domain classes nested in the domain class 'partyTransaction'. We could convert them to sortable columns by using the tag g:sortableColum