Database Reference
In-Depth Information
C H A P T E R 2
Design Considerations
In order to use cloud computing with the Azure platform beyond simple hosting, you must explore the
vast array of options available to you when it comes to designing solutions. In addition to the design
options presented in this chapter, you need a strong grasp of cloud computing's current shortcomings,
which may affect your design choices.
Design Factors
Before reviewing various design patterns, let's start with some opportunities and limitations that impact
your design choices. Keep in mind that although this topic focuses primarily on SQL Azure, many of the
concepts in this chapter apply to Azure development in general.
Offsite Storage
The Azure platform offers four distinct storage models, which were previously discussed in Chapter 1,
“Blob, Table, Queue, and SQL Azure.” Storing data in SQL Azure is similar to storing data in SQL Server.
All you need to do is issue T-SQL statements and review some of the limitations of the syntax specific to
SQL Azure, and off you go!
The ability to store data in SQL Azure using T-SQL offers unique opportunities. In many cases, you
can easily extend or port certain types of applications in SQL Azure with no (or limited) modifications.
This portability allows you either to implement solutions that directly depend on SQL Azure for storage,
or to use a local database while using SQL Azure transparently for additional storage requirements (such
as reporting).
However, keep in mind that you're limited to the amount of data you can store in a single SQL Azure
database. At the moment, SQL Azure supports two editions: Web Edition (1GB or 5GB) and Business
Edition (from 10GB to 50GB in 10GB increments). So, if your application needs to store more than 50GB
of data, or if your database can benefit from a multithreaded data access layer, you need to consider
splitting your data across multiple databases through a form of partitioning called a shard . You learn
about shards later in this chapter and in more detail throughout this topic.
High Availability
When designing applications, software developers and architects are usually concerned about high-
availability requirements. SQL Azure uses a very elaborate topology that maximizes workload
redistribution, transparency, and recovery. Figure 2-1 shows a high-level implementation of SQL Azure
that gives a hint about how advanced the backend infrastructure must be.
Search WWH ::




Custom Search