Getting Started with Microsoft Azure Storage
www.Wintellect.com
Consulting/Training
About Wintellect
who we are
Wintellect is the only company that offers the combined value of world class consulting services along with
onsite, virtual and on-demand developer training. We help companies build better software, faster, helping you
maximize and protect your consulting and training investments through ongoing knowledge transfer.
consulting
training
Wintellect helps you build better software, faster,
tackling the tough projects and solving the software
and technology questions that help you transform
your business.
Wintellect's courses are written and taught by some of
the biggest and most respected names in the Microsoft
programming industry.
Architecture, Analysis and Design
Full lifecycle software development
Debugging and Performance tuning
Database design and development
Learn from the best. Access the same training
Microsoft’s developers enjoy
Real world knowledge and solutions on both current
and cutting edge technologies
Flexibility in training options – onsite, virtual, on
demand
Consulting/Training
Consulting/Training
Agenda
Azure Storage Services
Blob Storage
Table Storage
Queues
Files
NoSQL
DocumentDB
MongoDB, RavenDB, CouchDB, etc
HDInsight and HBase
SQL Databases
Azure SQL Database (PAAS)
Installed SQL Databases (IAAS)
Consulting/Training
Azure Storage Services - Players
Designed for availability and (massive) scalability
Storage Types
Blobs
Tables
Queues
Files
Consumption-based billing
Consulting/Training
Azure Storage Services - Benefits
Cloud Storage - Anywhere and anytime access
Blobs, Disks, Tables, Queues and Files
Highly Durable, Available and Massively Scalable
Easily build “Internet scale” applications
More than 35 trillion stored objects
3.5+ Million requests/sec on average
Pay only for what you use
Exposed via easy and open REST APIs
Rich Client Libraries and Tools
Consulting/Training
Portals
Consulting/Training
Storage Types – Blob Storage
Simple REST interface (Put, Get, Delete)
Store binary objects – images, documents, media files, file storage
Big Data – store raw data/logs and compute/map reduce over data
Backups – data and device backups
Blobs are stored in Containers, can simulate a file hierarchy by including the
“path” in the Blob name
2 Types of Blobs - Block & Page Blobs.
Majority of use is Block Blobs. Write set of blocks, then commit. Max size is 200GB.
Page Blobs used for random r/w operations. Can be up to 1TB in size. Used for IaaS
VM images
Consulting/Training
Storage Types – Blob Storage
Consulting/Training
Blobs
Consulting/Training
Storage Types – Table Storage
Non-relational key/attribute storage
Tables store collections of “Entities”
Up to 255 values per entity, up to 1MB in size per entity
3 “reserved” values – PartitionKey, RowKey, Timestamp – you get 252
Entities are specified by the compound key [PartitionKey & RowKey]
The set of properties for which values are stored can vary from entity to
entity within the same table.
Table content can be queried with a combination of operations
(eq/ne) (gt/ge) (lt/le)
Consulting/Training
Storage Types – Table Storage
Consulting/Training
Tables
Consulting/Training
Storage Types – Queue Storage
Reliable, decoupled messaging & asynchronous communication between apps
and/or components
Decouple components/roles
Web role to worker role communication
Allows roles to scale independently
Messages
Can be up to 64 kb
Messages live up to 7 days
Not ordered, processed at least once
Uses lease-based message retrieval
A retrieved message is “invisible” until a period of time elapses or the message is deleted upon
completion
Consulting/Training
Storage Types – Queue Storage
Consulting/Training
Queues
Consulting/Training
Storage Types – File Storage
Shared folder & file based storage
Access content via REST API or as a standard SMB 2.1 file share
SMB access allows File I/O APIs to be used
SMB access is only within Azure Datacenter, only on VMs and Cloud Services
Scenarios
“Lift and Shift” applications to the cloud that use on-premise files shares
Shared/Centralized application settings for distributed applications
Diagnostic share for logs, metrics, and crash dumps
Dev/Test/Debug
Consulting/Training
Storage Considerations - Billing
Cost
Description
Amount
Capacity
How much space are you using?
Varies on:
Storage type
Redundancy (LRS, ZRS, GRS, RA-GRS)
Transactions
How often are you trying to access it? $0.005 per 100,000 transactions (R or W)
Transfer / Egress
When does it leave the facility?
Consulting/Training
5GB / month free
$0.12 per GB
$0.19 per GB Asia Pacific East/West
Japan East/West
$0.25 per GB Brazil South
Storage Considerations – Choosing a Service
Blobs vs Tables
Blobs are cheaper to store and transfer (bytes vs UTF-8 strings)
A blob can hold more data than an entity (200GB per block blob vs 1MB per entity)
Blobs are more portable between vendors / less proprietary
Tables are better at filtering, working with portions of the entity, or updating multiple
items (in the same partition) in a single transaction
Queues
How much data to put in the message vs the message as a reference to stored data
Be sure to manage requests to an empty queue (pause/backoff) vs your SLAs
Consulting/Training
Azure Storage Queue vs Service Bus Queue
Storage Queue
Service Bus Queue
• Generally cheaper
• $.005/100,000 txns vs $.10/100,000 txns
• Note – Only storage has per month storage
charge
• Higher capacity (Storage account capacity vs 80GB)
• Lower latency (10ms vs 20-25 ms)
•
•
•
•
•
•
•
•
•
Long-polling
FIFO
Has closer on-premises analog
Supports pub/sub and routing
Duplicate detection
Message TTL > 7 days
Messages > 64 KB < 256 KB
Supports at-most-once processing
Supports local transactions
Consulting/Training
Additional Services, Tools and Libraries
Azure Import/Export
Move TBs of data into and out of Azure Blobs by shipping disk
Submit and monitor jobs via REST and Portal
All disks encrypted with BitLocker
Client Libraries
Simplify interaction with REST services
Convenience capabilities – retry logic, parallelization, SAS tokens, …
.NET (Desktop, Phone, Windows), Java, C++, Android, Node.JS, Python, PHP, Ruby, IOS (Coming Soon)
Tools
PowerShell commands
CLI tools
AzCopy 3.0 – Copy blobs and disks (Tables and Files in Preview Release)
Consulting/Training
NoSQL and Big Data
Consulting/Training
Why Use a NoSQL Technology on Azure?
To scale for lots of users and
lots of data
To work better with different
data formats, e.g., JSON
Pros: NoSQL technologies can
offer more scalability than
relational databases
Pros: Avoiding
object/relational mapping
makes code easier to write
Pros: NoSQL technologies don’t
have fixed schemas
Cons: Often lose some
benefits of relational
databases, e.g., database-wide
transactions
Cons: Limited BI tools;
persistent data designed
for a single application is
harder to share
Cons: Fixed schemas help
prevent errors
Consulting/Training
To work with data in a more
flexible way
Comparing Azure Managed Data Services
Category
Storage
Abstractions
Maximum
Database
Size
Stored
Procedures/
Triggers
Pricing
Query
Language
Transaction
Support
Secondary
Indexes
Yes
Written in
T-SQL
Units of
throughput
SQL
Database
Relational
Tables,
rows,
columns
DocumentDB
Document
store
Collections,
documents
100s of
TBs
Extended
subset of
SQL
All documents
in the same
collection
Yes
Written in
JavaScript
Units of
throughput
Table Storage
Key/value
store
Tables,
partitions,
entities
100s of
TBs
Subset of
OData
queries
All entities in
the same
partition
No
None
GBs of
storage
500 GB
SQL
All rows and
tables in a
database
Consulting/Training
DocumentDB CRUD Operations
Consulting/Training
Other NoSQL Azure Options
Utilize via Marketplace, Hosted Service, or VM
MongoDB
Two options via marketplace
RavenDB
Just added to the marketplace
CouchDB
https://cloudant.com/sign-up/
Azure storage location in beta
All of the above can also be installed via VMs
Consulting/Training
Adding NoSQL services from Azure marketplace
Consulting/Training
Data Today - More and more and more and . . .
Consulting/Training
Big Data Analytics - The industry standard: Hadoop
Hadoop
MapReduce
...
HBase
YARN
Consulting/Training
Azure HDInsight
provides these as a
managed service
HDInsight MapReduce
An illustration
HDInsight MapReduce
Excel
Hive
Pig
...
MapReduce
Job
VM
VM
VM
Logic
Logic
Logic
HDFS API
HDInsight HBase is also
implemented on this API
and relies on Azure Blobs
1000110100110
0111101111101
1011010001101
1000110100110
0111101111101
1011010001101
1000110100110
0111101111101
1011010001101
Blob
Blob
Blob
Azure Blobs
Consulting/Training
Relational Databases
Consulting/Training
Database Options
Azure SQL Database
Database in a VM
SQL Server, Oracle, MySQL (VM cost includes product license cost)
Store data using attached disks in Blob Storage
Access an on-premises database from Azure
Using VPN or BizTalk Services Hybrid Connection (firewall-friendly, secure
connection from Azure to an on-premises TCP port, currently for Web Sites &
Mobile Services only)
Consulting/Training
Azure SQL Database
SQL Server Relational DB as a service
Same SQL Tabular Data Stream (TDS) interface
Simple provisioning
Security
SQL Server authentication only
Firewall – accessing IP addresses must be whitelisted (intra-Azure access can be
enabled/disabled)
Azure Table Storage & Azure SQL Database - Compared & Contrasted
- http://msdn.microsoft.com/en-us/library/jj553018.aspx
Consulting/Training
Azure SQL Database vs “Installed” SQL Server
Unsupported features:
Configuration is managed
Distributed transactions, distributed
3 high-availability replicas are
views
maintained for every database
All tables require a clustered index
Maximum DB size is 500GB
Does not include other SQL Server
Services (Reporting, SSIS, etc.)
Subset of Dynamic Management
Views
SQLCLR (CLR Data Types are supported)
SQL Agent, SQL Profiler
Native encryption (encryption at
application level)
Integrated Windows Authentication
(SQL authentication only)
http://msdn.microsoft.com/library/azure
Consulting/Training
/ff394115.aspx
Development & Tooling
Languages
.NET via ADO.NET
OData, EF, NHibernate, etc
JavaScript with node-sqlserver
module
C/C++ via ODBC
Java via MSFT JDBC
Tools
SQL Database Management Portal
Web-based tooling for working with tables,
views, stored procs, query editor, etc
SQL Server Data Tools
Integrate into VS IDE
SQL Server Management Studio (2008
R2+)
Others
SQL Server Command-Line utilities
PHP via MSFT PHP
CA ERWIN
DBArtisan
Consulting/Training
Choosing Tiers & Levels
Service
Tier
Performance
Level
Common App
Pattern
Performance
Business Continuity
Max DB
Size
Transaction Perf. DTUs
Objective
PITR
DR / GEO-Rep
Basic
Basic
Small DB
2 GB
Reliability / Hr.
Past 7
Days
DB Copy +
Manual Export
Standard
S1 / S2
Wrkgp/cloud app,
multiple concurrent
operations
250 GB
Reliability / Min. 15/ 50 Past 14
Days
DB Copy +
Manual Export
Premium
P1 / P2 / P3
Mission Critical, High 500 GB
volume, Many
concurrent Users
Reliability / sec.
Active Georeplication
Consulting/Training
5
100/
200/
800
Past 35
Days
SQL Azure
Consulting/Training
Resources
Guidance:
Tools:
Microsoft Azure Storage – What’s New, Best Practices
Storage Explorers
List as of 5/15/2014 - http://j.mp/AzureStorageExplorers
Jeffrey Richter’s Guide to Working with Azure
Storage Tables via C# and other .NET Languages
and Patterns (Build 2014) http://channel9.msdn.com/Events/Build/2014/3-628
Patterns & Practices for sharing Azure SQL Database
(plus helper library):
http://channel9.msdn.com/Shows/DataExposed/SqlDbShardingIntro
Documentation – http://wintellect.com/guide-toworking-with-azure-storage-tables
NuGet Package -
Demos/Sample Code:
http://www.nuget.org/packages/Wintellect.Azure.St
orage/
Azure SAS Generator App for Windows
http://j.mp/RichterAzureSASGenerator
Microsoft Azure Code Samples –
https://code.msdn.microsoft.com/windowsazure/
Patterns & Practices for sharing Azure SQL Database
(plus helper library):
http://channel9.msdn.com/Shows/DataExposed/SqlDbShardingIntro
Consulting/Training
Demos/Samples Used in Presentation
Download and upload files to Azure Storage from Universal Windows Apps
https://code.msdn.microsoft.com/windowsazure/Universal-Windows-Apps-1ea96689
Visual Studio Azure Storage Queues Quickstart
http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-queues/
Azure DocumentDB Code Samples
https://code.msdn.microsoft.com/windowsazure/Azure-DocumentDB-NET-Code-6b3da8af
Consulting/Training