Data Architecture for SaaS applications:-

SaaS applications are frequently required to have a secured data structure per client in addition to the database being robust. Thus, a SaaS application data structure varies from being a single database to a multi database solution. Broadly, there can be four approaches to designing database based on the requirements.

  • One database per client and a master database for the application holding general details e.g. Clients information.
  • Single database for all the clients with separate tables for clients.
  • Single database for all the clients with shared tables.
  • A multi-database solution with a few clients sharing the database based on data load and security factors.

Solutions for creating SaaS data architecture:-

Data can be stored in a single database for all the clients or it can be stored in a different database per client. Other options are a transition state, the transition between multi database and single database is fuzzy. The data can be stored in multiple transition states as described below depending on the volume, security and load factors

Above two pictures depict how the transition happens. So, the data can be stored in “separate DB”, “Separate Schema”, “Shared schema” (One database) or Multiple shared database.

Separate Databases

Storing tenant data in separate databases is simple. Along with this if needed, you can create a master application database holding client details with the database name (assigned dynamically on client creation) for each client.

Shared Database, Separate Schemas

Another approach involves creating separate tables in the same database for each clients.

Shared Database, Shared Schema

Third approach involves using the same database and the same set of tables to host multiple tenants’ data. A given table can include records from multiple tenants stored in any order; a Tenant ID column associates every record with the appropriate tenant.

Conditional DB sharing

Other approach involves using the same database or multiple database to host multiple tenants’ data. A given database can include records from multiple tenants or from single tenant depending on the requirements.

How this works:-
If client needs more security then we can house his data in separate DB.
Clients who do not have very critical data and have less load can be housed in single database.
This approach helps you enjoy the benefits of not increasing the unnecessary load on server with separating clients/data into single/multiple databases.

Ref :- http://msdn.microsoft.com/en-us/library/aa479086.aspx

Key evaluation parameters for outsourcing IT jobs to small/mid size companies worldwide:-

In evaluating small and medium companies offering outsourcing or consulting services, organisations need to evaluate companies before hiring. Finding the right one is often challenging and difficult because of the wrong information provided by marketing teams. Sometimes, the marketing team is smarter than the development team and is often able to sell a non-existing capability.

The areas which need to be evaluated, are listed below:

  • The management’s credibility and accomplishments.
  • Proposed team - Often companies focus on vendor credentials, with this, team credential is a necessary aspect to be looked at in the services industry.
  • Top 3 customers who are served by the company and 1-2 served by the proposed team.
  • Customer retention and relationships.
  • Company culture and work ethics.
  • Employee retention and commitment towards the company.
  • Cost and geographical location
  • Return on investment
Cakephp lightbox, cakephp modalbox
Posted on July 13, 2009

Hello friends getting lightbox/modalbox in to the application is really an addon to the site.

Here are few simple steps to get  lightbox/modalbox working on your cakephp site.

  1. Download ModalBox (you also need a prototype + script.aculo.us files there.) extract them all and place the files in webroot folder. (files you should see after extraction are “js/cakemodalbox.js” , “js/modalbox.js”, “css/modalbox.css”, “css/spinner.gif”).
  2. Include  4 javascripts i.e prototype.js, scriptaculos.js, modalbox.js and cakemodalbox.js in your default template file in the same order mentioned here. (Note for cakemodalbox.js coming below modalbox.js)
  3. In your controller include 2 lines of code
    1. var $components = array(’RequestHandler’);   // note for ‘RequestHandler’
    2. var $helpers    = array(’Html’,'Javascript’, ’Ajax’);
  4. There are no changes in model specifically.
  5. Now for example you want to show a view file say your login page with lightbox then just follow the simple steps.
    1. Include var $components = array(’RequestHandler’); and var $helpers    = array(’Html’,'Javascript’, ’Ajax’); in your controller. In my case it is user controller.
    2. Now for example you want to show a view file say your login page with lightbox then just follow the simple steps.echo $html->link(’Login’,array(’action’ => ‘ControllerName/login‘),array(’title’ => ‘Customer details’,'onclick’ => “Modalbox.show(this.href, {title: this.title, width: 400}); return false;”));
  6. change the ‘ControllerName’ as per your need.

    Likeways you can show any page in a light box or modalbox.

    Do let us know in case of any issue.

    Algoworks