{"id":72,"date":"2020-04-25T11:15:12","date_gmt":"2020-04-25T18:15:12","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/azure-sql\/?p=72"},"modified":"2025-10-31T13:19:29","modified_gmt":"2025-10-31T20:19:29","slug":"10-reasons-to-use-azure-sql-in-your-next-project","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/azure-sql\/10-reasons-to-use-azure-sql-in-your-next-project\/","title":{"rendered":"10 reasons to use Azure SQL in your next project"},"content":{"rendered":"<p>There are many database technologies available on Azure that you can choose from. Why would you use Azure SQL?\u00a0 There are so many new solutions, some very specialized and super cool, so you may be wondering why I&#8217;m telling you to use Azure SQL in your next project. Well, after I joined the Azure SQL PM team, I discovered that there are many, really, many features that developers don&#8217;t know they exists&#8230;and as a result Azure SQL is still used like its development and evolution stopped 20 years ago&#8230;when Azure SQL was not yet there, and only its on-prem brother, SQL Server, existed. Well, really a lot of improvements have been done, really making Azure SQL definitely a post-relational, cloud native, database. Let me show you why, using just 10 simple points.<\/p>\n<p><img decoding=\"async\" class=\"wp-image-75 size-large aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-content\/uploads\/sites\/56\/2020\/04\/10-Reasons-why-Azure-SQL-is-the-best-database-for-developers-Picture-489x1024.png\" alt=\"Image 10 Reasons why Azure SQL is the best database for developers 8211 Picture\" width=\"489\" height=\"1024\" srcset=\"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-content\/uploads\/sites\/56\/2020\/04\/10-Reasons-why-Azure-SQL-is-the-best-database-for-developers-Picture-489x1024.png 489w, https:\/\/devblogs.microsoft.com\/azure-sql\/wp-content\/uploads\/sites\/56\/2020\/04\/10-Reasons-why-Azure-SQL-is-the-best-database-for-developers-Picture-143x300.png 143w, https:\/\/devblogs.microsoft.com\/azure-sql\/wp-content\/uploads\/sites\/56\/2020\/04\/10-Reasons-why-Azure-SQL-is-the-best-database-for-developers-Picture-768x1609.png 768w, https:\/\/devblogs.microsoft.com\/azure-sql\/wp-content\/uploads\/sites\/56\/2020\/04\/10-Reasons-why-Azure-SQL-is-the-best-database-for-developers-Picture-733x1536.png 733w, https:\/\/devblogs.microsoft.com\/azure-sql\/wp-content\/uploads\/sites\/56\/2020\/04\/10-Reasons-why-Azure-SQL-is-the-best-database-for-developers-Picture-977x2048.png 977w, https:\/\/devblogs.microsoft.com\/azure-sql\/wp-content\/uploads\/sites\/56\/2020\/04\/10-Reasons-why-Azure-SQL-is-the-best-database-for-developers-Picture.png 1466w\" sizes=\"(max-width: 489px) 100vw, 489px\" \/><\/p>\n<h2>Batteries Included<\/h2>\n<p>Azure SQL is the relational and post-relational database that I\u2019d like to say has \u201cbatteries included\u201d. I borrowed that term from Python, one of my preferred languages, and that\u2019s also the main reason why it is a great database for developers. A lot of features that you would normally find in different, more specialized, products are nicely integrated into just one. Using different specialized products can bring great advantages but also poses a huge challenge: data must be moved around all those products and the burden of keeping consistency is on the developer&#8217;s shoulders. And it is a big one, one that will increase application complexity by an order or magnitude. And as a developer I just prefer to follow the <a href=\"https:\/\/en.wikipedia.org\/wiki\/KISS_principle\">KISS principle<\/a>. Azure SQL allows me to focus only on what it\u2019s unique to my company and application, delegating all the responsibilities related to data to something specialized on that. That\u2019s a big win for everyone.<\/p>\n<h2>Post-Relational features for the modern apps<\/h2>\n<p><strong>JSON<\/strong> is what developers love and breath, so <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/json\/json-data-sql-server\">native support to JSON<\/a> is a must for a modern database. Azure SQL provides pretty good support to generate, consume, manipulate and query JSON. But that\u2019s not enough. <strong>Graph<\/strong> support, via node and edge types, <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/graphs\/sql-graph-shortest-path\">transitive closure<\/a> and the ability to navigate <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/graphs\/sql-graph-shortest-path?view=sql-server-ver15#last_node\">arbitrarily deep relationships<\/a> using a very concise (similar to the well-known \u201cCypher\u201d) is available in Azure SQL right away. Also full Open Geospatial Consortium (OGC) support is provided, for modern, location aware, applications. This makes it easy to <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/spatial\/spatial-data-sql-server\">store geospatial data and query data<\/a> for closest locations, find all locations within a certain perimeter (perfect for geofencing) or, more in general, perform complex geospatial manipulations. All these features are available to be used right when you need it and you can rest assured that you\u2019ll get all support and benefits from the existing post\/relational engine that will optimize your graph, spatial and JSON query too.<\/p>\n<h2>Complete storage control and abstraction with Columnstore and Rowstore<\/h2>\n<p>With Azure SQL you can decide if a table should be saved using a <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/indexes\/clustered-and-nonclustered-indexes-described\">row-by-row<\/a> technique or a <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/indexes\/columnstore-indexes-overview\">column-by-column<\/a> one. Or a mix of the two. And this is really a killer feature as it allows the creation of solutions that can quickly access a single row or can easily read, aggregate and analyze hundreds of millions of rows.<\/p>\n<h2>Ultra-high concurrency with Lock-Free Memory-Optimized tables<\/h2>\n<p><a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/in-memory-oltp\/introduction-to-memory-optimized-tables\">Memory-Optimized tables<\/a> use a sophisticated lock-free mechanism, known as <a href=\"https:\/\/en.wikipedia.org\/wiki\/Multiversion_concurrency_control\">Multiversion Concurrency Control (MVCC)<\/a> to guarantee extremely high concurrency and still provide complete transactional support. Extremely high means <a href=\"https:\/\/www.microsoft.com\/en-us\/research\/blog\/hekaton-breaks-through\/\">hundreds of thousands of transactions per seconds<\/a>, and more.<\/p>\n<h2>Time Traveling with \u201cAs-Of\u201d queries<\/h2>\n<p>Azure SQL gives yo<span style=\"font-size: 1rem;\">u the ability to automatically track and execute \u201cas of\u201d queries by enabling <\/span><a style=\"background-color: #f7f7f9; font-size: 1rem;\" href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/tables\/temporal-tables\">Temporal Tables<\/a><span style=\"font-size: 1rem;\">. All changes to a table will be transparently tracked and made available via the \u201cHistory\u201d table. Again, com<\/span><span style=\"font-size: 1rem;\">pletely transparent to applications and so useful for auditing, reporting and business analytics.<\/span><\/p>\n<h2>Encryption, Masking and Row-Level Security<\/h2>\n<p>Azure SQL provides several levels of encryption, <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/security\/encryption\/encrypt-a-column-of-data\">from a column<\/a> to the <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/database-engine\/transparent-data-encryption-with-azure-sql-database\">entire database<\/a>, just right out of the box. <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/security\/encryption\/always-encrypted-database-engine\">Always Encrypted<\/a> makes sure your data is encrypted while in-flight to and from your application. <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/security\/row-level-security\">Row Level Security<\/a> allows you to set who can see certain rows and who can\u2019t, and <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/security\/dynamic-data-masking\">Data Masking<\/a> allows you to expose some part of your data while keeping privacy intact.<\/p>\n<h2>Blocking and Non-Blocking Transactions<\/h2>\n<p>With A<span style=\"font-size: 1rem;\">zure SQL <\/span><a style=\"background-color: #f7f7f9; font-size: 1rem;\" href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/t-sql\/statements\/set-transaction-isolation-level-transact-sql\">you can decide if you want to use locks<\/a><span style=\"font-size: 1rem;\"> to make sure your data is protected by other, concurrent modification, or use row-versioning to still get transactional consistency but without having to worry too much about locks. By default in Azure SQL you will be able to <\/span><strong style=\"font-size: 1rem;\">read data while it is being written<\/strong><span style=\"font-size: 1rem;\"> without having to compromise with scalability or consistency (<\/span><strong style=\"font-size: 1rem;\">Read Committed Snapshot Isolation Level<\/strong><span style=\"font-size: 1rem;\"> is set to \u201con\u201d by default).<\/span><\/p>\n<h2>Say what you want, Intelligent Optimizer will take care of the rest<\/h2>\n<p>SQL is a declarative language: you will tell the engine what you want instead of what you want it to do to get things done. The <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/query-processing-architecture-guide\">query optimizer<\/a> will figure out what is the best way to return the data you asked, by generating an Execution Plan (aka <a href=\"https:\/\/en.wikipedia.org\/wiki\/Directed_acyclic_graph\">DAG<\/a> in NoSQL world) and executing it. It will take into account data size, data distribution, index availability, memory, concurrency and time constraints and it will generate an execution plan that likely is the best possible given all aforementioned constraints. All this is possible as in the query optimizer there are 40+ years of research and 25+ of use-cases optimization, learned from the field, working hand-to-hand with customers. Something that cannot be found in any other database, at the moment.<\/p>\n<h2>Complete Monitorability and Full Insights<\/h2>\n<p>You\u2019ve done your\u00a0<span style=\"font-size: 1rem;\">w<\/span><span style=\"font-size: 1rem;\">ork, and everything works perfectly. Until it doesn\u2019t. How to understand what to fix or improve? Azure SQL provides complete transparency on its inner workings. You can go from high level monitoring down to analyzing that a single task is doing. All via <\/span><a style=\"background-color: #f7f7f9; font-size: 1rem;\" href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/system-dynamic-management-views\/system-dynamic-management-views\">Dynamic Management Views<\/a><span style=\"font-size: 1rem;\"> and <\/span><a style=\"background-color: #f7f7f9; font-size: 1rem;\" href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/extended-events\/extended-events\">Extended Events<\/a><span style=\"font-size: 1rem;\"> and other tools that come included in the product.<\/span><\/p>\n<h2>Wide range of prices and elasticity<\/h2>\n<p>Azure SQL comes in a lot of different flavor and options. Same engine, and the same features, but a variety of\u00a0 <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/sql-database\/sql-database-service-tiers-vcore\">Service Level Objectives<\/a> (SLO) allow you to choose the best price\/performance balance for your app. Extremely low latencies, incredible scalability or aggressive savings are on the table for you to choose. And moving from one to another is easy and can be dove via code, so you can use a performance sensitive SLO during working hours and move to a more cost-aware when less stress is expected on the database. Or you can automatically scale up and down using the <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/sql-database\/sql-database-serverless\">Serverless option<\/a>. Databases can also be pooled together to balance costs and resource usage in multi-tenant scenarios with <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/sql-database\/sql-database-elastic-pool\">Elastic Pools<\/a>. Whatever you need to create a balanced solution, you\u2019re covered.<\/p>\n<h2>Wide range\u00a0of platform and deployments options<\/h2>\n<p>Azure SQL has drivers support for all the most common languages be it C#, Java, Python, Node or Go. With .NET the newly released <a href=\"https:\/\/github.com\/dotnet\/SqlClient\">Microsoft.Data.SqlClient<\/a> is the way to go, open source and backward compatible with System.Data.SqlClient, but Azure SQL loves all developer equally, so look for your preferred language here \u201c<a href=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/developer-get-started\">Getting Started with SQL Server<\/a>\u201d (as Azure SQL in SQL server are just different twins) to get a kickstart. And just because Azure SQL in SQL server are just different twins, everything you will use on Azure SQL it will be easily usable on SQL Server which runs on Windows, but also on Linux and even on Edge devices. A database that spans from the cloud to the edge. That\u2019s pretty cool, isn\u2019t it?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>There are many database technologies available on Azure that you can choose from. Why would you use Azure SQL? Let me show you why, using just 10 simple points: from JSON support to ColumnStore, through Geospatial and Temporal queries, Non-Blocking transaction, Encryption and Row-Level Security and the amazing Intelligent Query Optimizer.<\/p>\n","protected":false},"author":24720,"featured_media":75,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[31,30,37,35,33,32,29,38,34,36],"class_list":["post-72","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure-sql","tag-columnstore","tag-developers","tag-encryption","tag-geospatial","tag-graph","tag-in-memory","tag-json","tag-security","tag-t-sql","tag-temporal"],"acf":[],"blog_post_summary":"<p>There are many database technologies available on Azure that you can choose from. Why would you use Azure SQL? Let me show you why, using just 10 simple points: from JSON support to ColumnStore, through Geospatial and Temporal queries, Non-Blocking transaction, Encryption and Row-Level Security and the amazing Intelligent Query Optimizer.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/posts\/72","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/users\/24720"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/comments?post=72"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/posts\/72\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/media\/75"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/media?parent=72"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/categories?post=72"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-json\/wp\/v2\/tags?post=72"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}