This commit is contained in:
Shawn Weisfeld Build 2021-02-04 03:16:03 +00:00
Родитель cbf68b2b59
Коммит 6daa087fce
28 изменённых файлов: 3887 добавлений и 3875 удалений

Просмотреть файл

@ -14,7 +14,7 @@
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.e3c811d780a09e785595e36be4217a7ab952f46ef2f08e5fc30d042f67c46bf2.js" integrity="sha256-48gR14CgnnhVleNr5CF6erlS9G7y8I5fww0EL2fEa/I="></script>
<script defer src="/Storage/en.search.min.61b55b4541bc4c90e042fdb1f7deab6f1c0c90d694b30ab36fc5e6e471c61a3f.js" integrity="sha256-YbVbRUG8TJDgQv2x996rbxwMkNaUswqzb8Xm5HHGGj8="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book

Просмотреть файл

@ -15,7 +15,7 @@
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.e3c811d780a09e785595e36be4217a7ab952f46ef2f08e5fc30d042f67c46bf2.js" integrity="sha256-48gR14CgnnhVleNr5CF6erlS9G7y8I5fww0EL2fEa/I="></script>
<script defer src="/Storage/en.search.min.61b55b4541bc4c90e042fdb1f7deab6f1c0c90d694b30ab36fc5e6e471c61a3f.js" integrity="sha256-YbVbRUG8TJDgQv2x996rbxwMkNaUswqzb8Xm5HHGGj8="></script>
<link rel="alternate" type="application/rss+xml" href="https://azure.github.io/Storage/categories/index.xml" title="Azure Storage" />
<!--
Made with Book Theme

Просмотреть файл

@ -1,199 +1,199 @@
<!DOCTYPE html>
<html lang="en" dir=>
<head>
<meta name="generator" content="Hugo 0.80.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Hitchhiker&#39;s Guide to the Data Lake # A comprehensive guide on key considerations involved in building your enterprise data lake
The Hitchhiker&#39;s Guide to the Data Lake When is ADLS Gen2 the right choice for your data lake? Key considerations in designing your data lake Terminology Organizing and managing data in your data lake Do I want a centralized or a federated data lake implementation? How do I organize my data?">
<!DOCTYPE html>
<html lang="en" dir=>
<head>
<meta name="generator" content="Hugo 0.80.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The Hitchhiker&#39;s Guide to the Data Lake # A comprehensive guide on key considerations involved in building your enterprise data lake
The Hitchhiker&#39;s Guide to the Data Lake When is ADLS Gen2 the right choice for your data lake? Key considerations in designing your data lake Terminology Organizing and managing data in your data lake Do I want a centralized or a federated data lake implementation? How do I organize my data?">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="The Hitchhiker&#39;s Guide to the Data Lake" />
<meta property="og:description" content="The Hitchhiker&#39;s Guide to the Data Lake # A comprehensive guide on key considerations involved in building your enterprise data lake
<meta property="og:description" content="The Hitchhiker&#39;s Guide to the Data Lake # A comprehensive guide on key considerations involved in building your enterprise data lake
The Hitchhiker&#39;s Guide to the Data Lake When is ADLS Gen2 the right choice for your data lake? Key considerations in designing your data lake Terminology Organizing and managing data in your data lake Do I want a centralized or a federated data lake implementation? How do I organize my data?" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://azure.github.io/Storage/docs/analytics/hitchhikers-guide-to-the-datalake/" />
<title>The Hitchhiker&#39;s Guide to the Data Lake | Azure Storage</title>
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.e3c811d780a09e785595e36be4217a7ab952f46ef2f08e5fc30d042f67c46bf2.js" integrity="sha256-48gR14CgnnhVleNr5CF6erlS9G7y8I5fww0EL2fEa/I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir=>
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/Storage"><img src="/Storage/images/azure-icon.png" alt="Logo" /><span>Azure Storage</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li>
<a href="https://azure.github.io/Storage/docs/analytics/" class="">Analytics</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/application-and-user-data/" class="">Application and User Data</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/backup-and-archive/" class="">Backup and Archive</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/hpc-iot-and-ai/" class="">HPC IoT and AI</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/storage-partners/" class="">Storage Partners</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/tools-and-utilities/" class="">Tools and Utilities</a>
</li>
</ul>
</nav>
<script>(function(){var menu=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(event){localStorage.setItem("menu.scrollTop",menu.scrollTop);});menu.scrollTop=localStorage.getItem("menu.scrollTop");})();</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/Storage/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>The Hitchhiker&#39;s Guide to the Data Lake</strong>
<label for="toc-control">
<img src="/Storage/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<title>The Hitchhiker&#39;s Guide to the Data Lake | Azure Storage</title>
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.61b55b4541bc4c90e042fdb1f7deab6f1c0c90d694b30ab36fc5e6e471c61a3f.js" integrity="sha256-YbVbRUG8TJDgQv2x996rbxwMkNaUswqzb8Xm5HHGGj8="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir=>
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/Storage"><img src="/Storage/images/azure-icon.png" alt="Logo" /><span>Azure Storage</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li>
<a href="https://azure.github.io/Storage/docs/analytics/" class="">Analytics</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/application-and-user-data/" class="">Application and User Data</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/backup-and-archive/" class="">Backup and Archive</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/hpc-iot-and-ai/" class="">HPC IoT and AI</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/storage-partners/" class="">Storage Partners</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/tools-and-utilities/" class="">Tools and Utilities</a>
</li>
</ul>
</nav>
<script>(function(){var menu=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(event){localStorage.setItem("menu.scrollTop",menu.scrollTop);});menu.scrollTop=localStorage.getItem("menu.scrollTop");})();</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/Storage/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>The Hitchhiker&#39;s Guide to the Data Lake</strong>
<label for="toc-control">
<img src="/Storage/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav id="TableOfContents">
<ul>
<li><a href="#when-is-adls-gen2-the-right-choice-for-your-data-lake">When is ADLS Gen2 the right choice for your data lake?</a></li>
@ -219,21 +219,21 @@ https://github.com/alex-shpak/hugo-book
</li>
<li><a href="#recommended-reading">Recommended reading</a></li>
</ul>
</nav>
</aside>
</header>
<article class="markdown"><h1 id="the-hitchhiker39s-guide-to-the-data-lake">
The Hitchhiker's Guide to the Data Lake
<a class="anchor" href="#the-hitchhiker39s-guide-to-the-data-lake">#</a>
</h1>
</nav>
</aside>
</header>
<article class="markdown"><h1 id="the-hitchhiker39s-guide-to-the-data-lake">
The Hitchhiker's Guide to the Data Lake
<a class="anchor" href="#the-hitchhiker39s-guide-to-the-data-lake">#</a>
</h1>
<p><em>A comprehensive guide on key considerations involved in building your enterprise data lake</em></p>
<ul>
<li><a href="#the-hitchhikers-guide-to-the-data-lake">The Hitchhiker's Guide to the Data Lake</a>
@ -271,17 +271,17 @@ https://github.com/alex-shpak/hugo-book
<blockquote>
<p>Important: Please consider the content of this document as guidance and best practices to help you make your architectural and implementation decisions. This is not an official HOW-TO documentation.</p>
</blockquote>
<h2 id="when-is-adls-gen2-the-right-choice-for-your-data-lake">
When is ADLS Gen2 the right choice for your data lake?
<a class="anchor" href="#when-is-adls-gen2-the-right-choice-for-your-data-lake">#</a>
</h2>
<h2 id="when-is-adls-gen2-the-right-choice-for-your-data-lake">
When is ADLS Gen2 the right choice for your data lake?
<a class="anchor" href="#when-is-adls-gen2-the-right-choice-for-your-data-lake">#</a>
</h2>
<p>An enterprise data lake is designed to be a central repository of unstructured , semi-structured and structured data used in your big data platform. The goal of the enterprise data lake is to eliminate data silos (where the data can only be accessed by one part of your organization) and promote a single storage layer that can accommodate the various data needs of the organization For more information on picking the right storage for your solution, please visit the <a href="https://docs.microsoft.com/azure/architecture/guide/technology-choices/data-store-comparison">Choosing a big data storage technology in Azure</a> article.</p>
<p>A common question that comes up is when to use a data warehouse vs a data lake. We urge you to think about data lake and data warehouse as complementary solutions that work together to help you derive key insights from your data. A data lake is a store for all types of data from various sources. The data in its natural form is stored as raw data, and schema and transformations are applied on this raw data to gain valuable business insights depending on the key questions the business is trying to answer. A data warehouse is a store for highly structured schematized data that is usually organized and processed to derive very specific insights. E.g. a retail customer can store the past 5 years worth of sales data in a data lake, and in addition they can process data from social media to extract the new trends in consumption and intelligence from retail analytics solutions on the competitive landscape and use all these as input together to generate a data set that can be used to project the next years sales targets. They can then store the highly structured data in a data warehouse where BI analysts can build the target sales projections. In addition, they can use the same sales data and social media trends in the data lake to build intelligent machine learning models for personalized recommendations on their website.</p>
<p>ADLS Gen2 is an enterprise ready hyperscale repository of data for your big data analytics workloads. ADLS Gen2 offers faster performance and Hadoop compatible access with the <a href="https://docs.microsoft.com/azure/storage/blobs/data-lake-storage-namespace">hierarchical namespace</a>, lower cost and security with fine grained access controls and native AAD integration. This lends itself as the choice for your enterprise data lake focused on big data analytics scenarios – extracting high value structured data out of unstructured data using transformations, advanced analytics using machine learning or real time data ingestion and analytics for fast insights. Its worth noting that we have seen customers have different definition of what hyperscale means – this depends on the data stored, the number of transactions and the throughput of the transactions. When we say hyperscale, we are typically referring to multi-petabytes of data and hundreds of Gbps in throughput – the challenges involved with this kind of analytics is very different from a few hundred GB of data and a few Gbps of transactions in throughput.</p>
<h2 id="key-considerations-in-designing-your-data-lake">
Key considerations in designing your data lake
<a class="anchor" href="#key-considerations-in-designing-your-data-lake">#</a>
</h2>
<h2 id="key-considerations-in-designing-your-data-lake">
Key considerations in designing your data lake
<a class="anchor" href="#key-considerations-in-designing-your-data-lake">#</a>
</h2>
<p>As you are building your enterprise data lake on ADLS Gen2, its important to understand your requirements around your key use cases, including</p>
<ol>
<li>What am I storing in my data lake?</li>
@ -300,10 +300,10 @@ https://github.com/alex-shpak/hugo-book
<li>Anti-patterns that you want to avoid</li>
</ul>
<p>To best utilize this document, identify your key scenarios and requirements and weigh in our options against your requirements to decide on your approach. If you are not able to pick an option that perfectly fits your scenarios, we recommend that you do a proof of concept (PoC) with a few options to let the data guide your decision.</p>
<h2 id="terminology">
Terminology
<a class="anchor" href="#terminology">#</a>
</h2>
<h2 id="terminology">
Terminology
<a class="anchor" href="#terminology">#</a>
</h2>
<p>Before we talk about the best practices in building your data lake, its important to get familiar with the various terminology we will use this document in the context of building your data lake with ADLS Gen2. This document assumes that you have an account in Azure.</p>
<p><strong>Resource</strong>: A manageable item that is available through Azure. Virtual machines, storage accounts, VNETs are examples of resources.</p>
<p><strong>Subscription</strong>: An Azure subscription is a logical entity that is used to separate the administration and financial (billing) logic of your Azure resources. A subscription is associated with limits and quotas on Azure resources, you can read about them <a href="https://docs.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits">here</a>.</p>
@ -312,32 +312,32 @@ https://github.com/alex-shpak/hugo-book
<p><strong>container (also referred to as container for non-HNS enabled accounts)</strong>: A container organizes a set of objects (or files). A storage account has no limits on the number of containers, and the container can store an unlimited number of folders and files. There are properties that can be applied at a container level such as <a href="https://docs.microsoft.com/azure/storage/blobs/data-lake-storage-access-control#role-based-access-control">RBACs</a> and <a href="https://docs.microsoft.com/azure/storage/blobs/data-lake-storage-access-control#shared-key-and-shared-access-signature-sas-authentication">SAS keys</a>.</p>
<p><strong>Folder/Directory</strong>: A folder (also referred to as a directory) organizes a set of objects (other folders or files). There are no limits on how many folders or files can be created under a folder. A folder also has <a href="https://docs.microsoft.com/azure/storage/blobs/data-lake-storage-access-control#access-control-lists-on-files-and-directories">access control lists (ACLs)</a> associated with it, there are two types of ACLs associated with a folder – access ACLs and default ACLs, you can read more about them <a href="https://docs.microsoft.com/azure/storage/blobs/data-lake-storage-access-control#types-of-access-control-lists">here</a>.</p>
<p><strong>Object/file</strong>: A file is an entity that holds data that can be read/written. A file has an <a href="https://docs.microsoft.com/azure/storage/blobs/data-lake-storage-access-control#access-control-lists-on-files-and-directories">access control list</a> associated with it. A file has only access ACLs and no default ACLs.</p>
<h2 id="organizing-and-managing-data-in-your-data-lake">
Organizing and managing data in your data lake
<a class="anchor" href="#organizing-and-managing-data-in-your-data-lake">#</a>
</h2>
<h2 id="organizing-and-managing-data-in-your-data-lake">
Organizing and managing data in your data lake
<a class="anchor" href="#organizing-and-managing-data-in-your-data-lake">#</a>
</h2>
<p>As our enterprise customers build out their data lake strategy, one of the key value proposition of ADLS Gen2 is to serve as the single data store for all their analytics scenarios. Please remember that this single data store is a logical entity that could manifest either as a single ADLS Gen2 account or as multiple accounts depending on the design considerations. Some customers have end to end ownership of the components of an analytics pipeline, and other customers have a central team/ organization managing the infrastructure, operations and governance of the data lake while serving multiple customers – either other organizations in their enterprise or other customers external to their enterprise.</p>
<p>In this section, we have addressed our thoughts and recommendations on the common set of questions that we hear from our customers as they design their enterprise data lake. For illustration, we will take the example of a large retail customer, Contoso.com, building out their data lake strategy to help with various predictive analytics scenarios.</p>
<h3 id="do-i-want-a-centralized-or-a-federated-data-lake-implementation">
Do I want a centralized or a federated data lake implementation?
<a class="anchor" href="#do-i-want-a-centralized-or-a-federated-data-lake-implementation">#</a>
</h3>
<h3 id="do-i-want-a-centralized-or-a-federated-data-lake-implementation">
Do I want a centralized or a federated data lake implementation?
<a class="anchor" href="#do-i-want-a-centralized-or-a-federated-data-lake-implementation">#</a>
</h3>
<p>As an enterprise data lake, you have two available options – either centralize all the data management for your analytics needs within one organization, or have a federated model, where your customers manage their own data lakes while the centralized data team provides guidance and also manages a few key aspects of the data lake such as security and data governance. It is important to remember that both the centralized and federated data lake strategies can be implemented with one single storage account or multiple storage accounts.</p>
<p>A common question our customers ask us is if they can build their data lake in a single storage account or if they need multiple storage accounts. While technically a single ADLS Gen2 could solve your business needs, there are various reasons why a customer would choose multiple storage accounts, including, but not limited to the following scenarios in the rest of this section.</p>
<h4 id="key-considerations----omit-in-toc---">
Key considerations <!-- raw HTML omitted -->
<a class="anchor" href="#key-considerations----omit-in-toc---">#</a>
</h4>
<h4 id="key-considerations----omit-in-toc---">
Key considerations <!-- raw HTML omitted -->
<a class="anchor" href="#key-considerations----omit-in-toc---">#</a>
</h4>
<p>When deciding the number of storage accounts you want to create, the following considerations are helpful in deciding the number of storage accounts you want to provision.</p>
<ul>
<li>A single storage account gives you the ability to manage a single set of control plane management operations such as RBACs, firewall settings, data lifecycle management policies for all the data in your storage account, while allowing you to organize your data using containers, files and folders on the storage account. If you want to optimize for ease of management, specially if you adopt a centralized data lake strategy, this would be a good model to consider.</li>
<li>Multiple storage accounts provide you the ability to isolate data across different accounts so different management policies can be applied to them or manage their billing/cost logic separately. If you are considering a federated data lake strategy with each organization or business unit having their own set of manageability requirements, then this model might work best for you.</li>
</ul>
<p>Let us put these aspects in context with a few scenarios.</p>
<h4 id="enterprise-data-lake-with-a-global-footprint----omit-in-toc---">
Enterprise data lake with a global footprint <!-- raw HTML omitted -->
<a class="anchor" href="#enterprise-data-lake-with-a-global-footprint----omit-in-toc---">#</a>
</h4>
<h4 id="enterprise-data-lake-with-a-global-footprint----omit-in-toc---">
Enterprise data lake with a global footprint <!-- raw HTML omitted -->
<a class="anchor" href="#enterprise-data-lake-with-a-global-footprint----omit-in-toc---">#</a>
</h4>
<p>Driven by global markets and/or geographically distributed organizations, there are scenarios where enterprises have their analytics scenarios factoring multiple geographic regions. The data itself can be categorized into two broad categories.</p>
<ul>
<li>Data that can be shared globally across all regions – E.g. Contoso is trying to project their sales targets for the next fiscal year and want to get the sales data from their various regions.</li>
@ -345,46 +345,46 @@ https://github.com/alex-shpak/hugo-book
</ul>
<p>In this scenario, the customer would provision region-specific storage accounts to store data for a particular region and allow sharing of specific data with other regions. There is still one centralized logical data lake with a central set of infrastructure management, data governance and other operations that comprises of multiple storage accounts here.</p>
<p><img src="images/global_distributed_datalake.png" alt="" /></p>
<h4 id="customer-or-data-specific-isolation----omit-in-toc---">
Customer or data specific isolation <!-- raw HTML omitted -->
<a class="anchor" href="#customer-or-data-specific-isolation----omit-in-toc---">#</a>
</h4>
<h4 id="customer-or-data-specific-isolation----omit-in-toc---">
Customer or data specific isolation <!-- raw HTML omitted -->
<a class="anchor" href="#customer-or-data-specific-isolation----omit-in-toc---">#</a>
</h4>
<p>There are scenarios where enterprise data lakes serve multiple customer (internal/external) scenarios that may be subject to different requirements – different query patterns and different access requirements. Let us take our Contoso.com example where they have analytics scenarios to manage the company operations. In this case, they have various data sources – employee data, customers/campaign data and financial data that are subject to different governance and access rules and are also possibly managed by different organizations within the company. In this case, they could choose to create different data lakes for the various data sources.</p>
<p>In another scenario, enterprises that serve as a multi-tenant analytics platform serving multiple customers could end up provisioning individual data lakes for their customers in different subscriptions to help ensure that the customer data and their associated analytics workloads are isolated from other customers to help manage their cost and billing models.</p>
<p><img src="images/isolation_requirements_data_lake.png" alt="" /></p>
<h4 id="recommendations----omit-in-toc---">
Recommendations <!-- raw HTML omitted -->
<a class="anchor" href="#recommendations----omit-in-toc---">#</a>
</h4>
<h4 id="recommendations----omit-in-toc---">
Recommendations <!-- raw HTML omitted -->
<a class="anchor" href="#recommendations----omit-in-toc---">#</a>
</h4>
<ul>
<li>Create different storage accounts (ideally in different subscriptions) for your development and production environments. In addition to ensuring that there is enough isolation between your development and production environments requiring different SLAs, this also helps you track and optimize your management and billing policies efficiently.</li>
<li>Identify the different logical sets of your data and think about your needs to manage them in a unified or isolated fashion – this will help determine your account boundaries.</li>
<li>Start your design approach with one storage account and think about reasons why you need multiple storage accounts (isolation, region based requirements etc) instead of the other way around.</li>
<li>There are also <a href="https://docs.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits">subscription limits and quotas</a> on other resources (such as VM cores, ADF instances) – factor that into consideration when designing your data lake.</li>
</ul>
<h4 id="anti-patterns----omit-in-toc---">
Anti-patterns <!-- raw HTML omitted -->
<a class="anchor" href="#anti-patterns----omit-in-toc---">#</a>
</h4>
<h5 id="beware-of-multiple-data-lake-management----omit-in-toc---">
Beware of multiple data lake management <!-- raw HTML omitted -->
<a class="anchor" href="#beware-of-multiple-data-lake-management----omit-in-toc---">#</a>
</h5>
<h4 id="anti-patterns----omit-in-toc---">
Anti-patterns <!-- raw HTML omitted -->
<a class="anchor" href="#anti-patterns----omit-in-toc---">#</a>
</h4>
<h5 id="beware-of-multiple-data-lake-management----omit-in-toc---">
Beware of multiple data lake management <!-- raw HTML omitted -->
<a class="anchor" href="#beware-of-multiple-data-lake-management----omit-in-toc---">#</a>
</h5>
<p>When you decide on the number of ADLS Gen2 storage accounts, ensure that you are optimizing for your consumption patterns. If you do not require isolation and you are not utilizing your storage accounts to their fullest capabilities, you will be incurring the overhead of managing multiple accounts without a meaningful return on investment.</p>
<h5 id="copying-data-back-and-forth----omit-in-toc---">
Copying data back and forth <!-- raw HTML omitted -->
<a class="anchor" href="#copying-data-back-and-forth----omit-in-toc---">#</a>
</h5>
<h5 id="copying-data-back-and-forth----omit-in-toc---">
Copying data back and forth <!-- raw HTML omitted -->
<a class="anchor" href="#copying-data-back-and-forth----omit-in-toc---">#</a>
</h5>
<p>When you have multiple data lakes, one thing you would want to treat carefully is if and how you are replicating data across the multiple accounts. This creates a management problem of what is the source of truth and how fresh it needs to be, and also consumes transactions involved in copying data back and forth. We have features in our roadmap that makes this workflow easier if you have a legitimate scenario to replicate your data.</p>
<h5 id="a-note-on-scale----omit-in-toc---">
A note on scale <!-- raw HTML omitted -->
<a class="anchor" href="#a-note-on-scale----omit-in-toc---">#</a>
</h5>
<h5 id="a-note-on-scale----omit-in-toc---">
A note on scale <!-- raw HTML omitted -->
<a class="anchor" href="#a-note-on-scale----omit-in-toc---">#</a>
</h5>
<p>One common question that our customers ask is if a single storage account can infinitely continue to scale to their data, transaction and throughput needs. Our goal in ADLS Gen2 is to meet the customer where they want in terms of their limits. We do request that when you have a scenario where you have requirements for really storing really large amounts of data (multi-petabytes) and require the account to support a really large transaction and throughput pattern (tens of thousands of TPS and hundreds of Gbps throughput), typically observed by requiring 1000s of cores of compute power for analytics processing via Databricks or HDInsight, please do contact our product group so we can plan to support your requirements appropriately.</p>
<h3 id="how-do-i-organize-my-data">
How do I organize my data?
<a class="anchor" href="#how-do-i-organize-my-data">#</a>
</h3>
<h3 id="how-do-i-organize-my-data">
How do I organize my data?
<a class="anchor" href="#how-do-i-organize-my-data">#</a>
</h3>
<p>Data organization in a an ADLS Gen2 account can be done in the hierarchy of containers, folders and files in that order, as we saw above. A very common point of discussion as we work with our customers to build their data lake strategy is how they can best organize their data. There are multiple approaches to organizing the data in a data lake, this section documents a common approach that has been adopted by many customers building a data platform.</p>
<p>This organization follows the lifecycle of the data as it flows through the source systems all the way to the end consumers – the BI analysts or Data Scientists. As an example, let us follow the journey of sales data as it travels through the data analytics platform of Contoso.com.</p>
<p><img src="images/data_lake_zones.png" alt="" /></p>
@ -406,15 +406,15 @@ https://github.com/alex-shpak/hugo-book
<p><strong>Archive data</strong>: This is your organizations data vault - that has data stored to primarily comply with retention policies and has very restrictive usage, such as supporting audits. You can use the Cool and Archive tiers in ADLS Gen2 to store this data. You can read more about our <a href="https://docs.microsoft.com/azure/storage/blobs/storage-lifecycle-management-concepts?tabs=azure-portal">data lifecycle management policies</a> to identify a plan that works for you.</p>
</li>
</ul>
<h4 id="key-considerations----omit-in-toc----1">
Key considerations <!-- raw HTML omitted -->
<a class="anchor" href="#key-considerations----omit-in-toc----1">#</a>
</h4>
<h4 id="key-considerations----omit-in-toc----1">
Key considerations <!-- raw HTML omitted -->
<a class="anchor" href="#key-considerations----omit-in-toc----1">#</a>
</h4>
<p>When deciding the structure of your data, consider both the semantics of the data itself as well as the consumers who access the data to identify the right data organization strategy for you.</p>
<h4 id="recommendations----omit-in-toc----1">
Recommendations <!-- raw HTML omitted -->
<a class="anchor" href="#recommendations----omit-in-toc----1">#</a>
</h4>
<h4 id="recommendations----omit-in-toc----1">
Recommendations <!-- raw HTML omitted -->
<a class="anchor" href="#recommendations----omit-in-toc----1">#</a>
</h4>
<ul>
<li>Create different folders or containers (more below on considerations between folders vs containers) for the different data zones - raw, enriched, curated and workspace data sets.</li>
<li>Inside a zone, choose to organize data in folders according to logical separation, e.g. datetime or business units or both. You can find more examples and scenarios on directory layout in our <a href="https://docs.microsoft.com/azure/storage/blobs/data-lake-storage-best-practices#directory-layout-considerations">best practices document</a>.
@ -502,30 +502,30 @@ https://github.com/alex-shpak/hugo-book
</tr>
</tbody>
</table>
<h4 id="anti-patterns----omit-in-toc----1">
Anti-patterns <!-- raw HTML omitted -->
<a class="anchor" href="#anti-patterns----omit-in-toc----1">#</a>
</h4>
<h5 id="indefinite-growth-of-irrelevant-data----omit-in-toc---">
Indefinite growth of irrelevant data <!-- raw HTML omitted -->
<a class="anchor" href="#indefinite-growth-of-irrelevant-data----omit-in-toc---">#</a>
</h5>
<h4 id="anti-patterns----omit-in-toc----1">
Anti-patterns <!-- raw HTML omitted -->
<a class="anchor" href="#anti-patterns----omit-in-toc----1">#</a>
</h4>
<h5 id="indefinite-growth-of-irrelevant-data----omit-in-toc---">
Indefinite growth of irrelevant data <!-- raw HTML omitted -->
<a class="anchor" href="#indefinite-growth-of-irrelevant-data----omit-in-toc---">#</a>
</h5>
<p>While ADLS Gen2 storage is not very expensive and lets you store a large amount of data in your storage accounts, lack of lifecycle management policies could end up growing the data in the storage very quickly even if you dont require the entire corpus of data for your scenarios. Two common patterns where we see this kind of data growth is :-</p>
<ul>
<li><strong>Data refresh with a newer version of data</strong> – Customers typically keep a few older versions of the data for analysis when there is a period refresh of the same data, e.g. when customer engagement data over the last month is refreshed daily over a rolling window of 30 days, you get 30 days engagement data everyday and when you dont have a clean up process in place, your data could grow exponentially.</li>
<li><strong>Workspace data accumulation</strong> – In the workspace data zone, the customers of your data platform, i.e. the BI analysts or data scientists can bring their own data sets Typically, we have seen that this data could also accumulate just as easily when the data not used is left lying around in the storage spaces.</li>
</ul>
<h3 id="how-do-i-manage-access-to-my-data">
How do I manage access to my data?
<a class="anchor" href="#how-do-i-manage-access-to-my-data">#</a>
</h3>
<h3 id="how-do-i-manage-access-to-my-data">
How do I manage access to my data?
<a class="anchor" href="#how-do-i-manage-access-to-my-data">#</a>
</h3>
<p>ADLS Gen2 supports access control models that combine both RBACs and ACLs to manage access to the data. You can find more information about the access control <a href="https://docs.microsoft.com/azure/storage/blobs/data-lake-storage-access-control">here</a>. In addition to managing access using AAD identities using RBACs and ACLs, ADLS Gen2 also supports using SAS tokens and shared keys for managing access to data in your Gen2 account.</p>
<p>A common question that we hear from our customers is when to use RBACs and when to use ACLs to manage access to the data. RBACs let you assign roles to security principals (user, group, service principal or managed identity in AAD) and these roles are associated with sets of permissions to the data in your container. RBACs can help manage roles related to control plane operations (such as adding other users and assigning roles, manage encryption settings, firewall rules etc) or for data plane operations (such as creating containers, reading and writing data etc). Fore more information on RBACs, you can read <a href="https://docs.microsoft.com/azure/role-based-access-control/role-assignments-portal">this article</a>.</p>
<p>RBACs are essentially scoped to top-level resources – either storage accounts or containers in ADLS Gen2. You can also apply RBACs across resources at a resource group or subscription level. ACLs let you manage a specific set of permissions for a security principal to a much narrower scope – a file or a directory in ADLS Gen2. There are 2 types of ACLs – Access ADLs that control access to a file or a directory, Default ACLs are templates of ACLs set for directories that are associated with a directory, a snapshot of these ACLs are inherited by any child items that are created under that directory.</p>
<h4 id="key-considerations----omit-in-toc----2">
Key considerations <!-- raw HTML omitted -->
<a class="anchor" href="#key-considerations----omit-in-toc----2">#</a>
</h4>
<h4 id="key-considerations----omit-in-toc----2">
Key considerations <!-- raw HTML omitted -->
<a class="anchor" href="#key-considerations----omit-in-toc----2">#</a>
</h4>
<p>The table below provides a quick overview of how ACLs and RBACs can be used to manage permissions to the data in your ADLS Gen2 accounts – at a high level, use RBACs to manage coarse grained permissions (that apply to storage accounts or containers) and use ACLs to manage fine grained permissions (that apply to files and directories).</p>
<table>
<thead>
@ -554,10 +554,10 @@ https://github.com/alex-shpak/hugo-book
</tbody>
</table>
<p>When using RBAC at the container level as the only mechanism for data access control, be cautious of the <a href="https://docs.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#role-based-access-control-limits">2000 limit</a>, particularly if you are likely to have a large number of containers. You can view the number of role assigments per subscription in any of the access control (IAM) blades in the portal.</p>
<h4 id="recommendations----omit-in-toc----2">
Recommendations <!-- raw HTML omitted -->
<a class="anchor" href="#recommendations----omit-in-toc----2">#</a>
</h4>
<h4 id="recommendations----omit-in-toc----2">
Recommendations <!-- raw HTML omitted -->
<a class="anchor" href="#recommendations----omit-in-toc----2">#</a>
</h4>
<ul>
<li>Create security groups for the level of permissions you want for an object (typically a directory from what we have seen with our customers) and add them to the ACLs. For specific security principals you want to provide permissions, add them to the security group instead of creating specific ACLs for them. Following this practice will help you minimize the process of managing access for new identities – which would take a really long time if you want to add the new identity to every single file and folder in your container recursively. Let us take an example where you have a directory, /logs, in your data lake with log data from your server. You ingest data into this folder via ADF and also let specific users from the service engineering team upload logs and manage other users to this folder. In addition, you also have various Databricks clusters analyzing the logs. You will create the /logs directory and create two AAD groups LogsWriter and LogsReader with the following permissions.
<ul>
@ -568,29 +568,29 @@ https://github.com/alex-shpak/hugo-book
</ul>
</li>
</ul>
<h3 id="what-data-format-do-i-choose">
What data format do I choose?
<a class="anchor" href="#what-data-format-do-i-choose">#</a>
</h3>
<h3 id="what-data-format-do-i-choose">
What data format do I choose?
<a class="anchor" href="#what-data-format-do-i-choose">#</a>
</h3>
<p>Data may arrive to your data lake account in a variety of formats – human readable formats such as JSON, CSV or XML files, compressed binary formats such as .tar.gz and a variety of sizes – huge files (a few TBs) such as an export of a SQL table from your on-premise systems or a large number of tiny files (a few KBs) such as real-time events from your IoT solution. While ADLS Gen2 supports storing all kinds of data without imposing any restrictions, it is better to think about data formats to maximize efficiency of your processing pipelines and optimize costs – you can achieve both of these by picking the right format and the right file sizes.
Hadoop has a set of file formats it supports for optimized storage and processing of structured data. Let us look at some common file formats – <a href="https://avro.apache.org/docs/current/">Avro</a>, <a href="https://parquet.apache.org/documentation/latest/">Parquet</a> and <a href="https://orc.apache.org/docs/">ORC</a>. All of these are machine-readable binary file formats, offer compression to manage the file size and are self-describing in nature with a schema embedded in the file. The difference between the formats is in how data is stored – Avro stores data in a row-based format and Parquet and ORC formats store data in a columnar format.</p>
<h4 id="key-considerations----omit-in-toc----3">
Key considerations <!-- raw HTML omitted -->
<a class="anchor" href="#key-considerations----omit-in-toc----3">#</a>
</h4>
<h4 id="key-considerations----omit-in-toc----3">
Key considerations <!-- raw HTML omitted -->
<a class="anchor" href="#key-considerations----omit-in-toc----3">#</a>
</h4>
<ul>
<li>Avro file format is favored where the I/O patterns are more write heavy or the query patterns favor retrieving multiple rows of records in their entirety. E.g. Avro format is favored by message bus such as Event Hub or Kafka writes multiple events/messages in succession.</li>
<li>Parquet and ORC file formats are favored when the I/O patterns are more read heavy and/or when the query patterns are focused on a subset of columns in the records – where the read transactions can be optimized to retrieve specific columns instead of reading the entire record.</li>
</ul>
<h3 id="how-do-i-manage-my-data-lake-cost">
How do I manage my data lake cost?
<a class="anchor" href="#how-do-i-manage-my-data-lake-cost">#</a>
</h3>
<h3 id="how-do-i-manage-my-data-lake-cost">
How do I manage my data lake cost?
<a class="anchor" href="#how-do-i-manage-my-data-lake-cost">#</a>
</h3>
<p>ADLS Gen2 offers a data lake store for your analytics scenarios with the goal of lowering your total cost of ownership. The pricing for ADLS Gen2 can be found <a href="https://azure.microsoft.com/pricing/details/storage/data-lake/">here</a>. As our enterprise customers serve the needs of multiple organizations including analytics use-cases on a central data lake, their data and transactions tend to increase dramatically. With little or no centralized control, so will the associated costs increase. This section provides key considerations that you can use to manage and optimize the cost of your data lake.</p>
<h4 id="key-considerations----omit-in-toc----4">
Key considerations <!-- raw HTML omitted -->
<a class="anchor" href="#key-considerations----omit-in-toc----4">#</a>
</h4>
<h4 id="key-considerations----omit-in-toc----4">
Key considerations <!-- raw HTML omitted -->
<a class="anchor" href="#key-considerations----omit-in-toc----4">#</a>
</h4>
<ul>
<li>ADLS Gen2 provides policy management that you can use to leverage the lifecycle of data stored in your Gen2 account. You can read more about these policies <a href="https://docs.microsoft.com/azure/storage/blobs/storage-lifecycle-management-concepts?tabs=azure-portal">here</a>. E.g. if your organization has a retention policy requirement to keep the data for 5 years, you can set a policy to automatically delete the data if it has not been modified for 5 years. If your analytics scenarios primarily operate on data that is ingested in the past month, you can move the data older than the month to a lower tier (cool or archive) which have a lower cost for data stored. Please note that the lower tiers have a lower price for data at rest, but higher policies for transactions, so do not move data to lower tiers if you expect the data to be frequently transacted on.</li>
</ul>
@ -599,20 +599,20 @@ Hadoop has a set of file formats it supports for optimized storage and processin
<li>Ensure that you are choosing the right replication option for your accounts, you can read the <a href="https://docs.microsoft.com/azure/storage/common/storage-redundancy">data redundancy article</a> to learn more about your options. E.g. while GRS accounts ensure that your data is replicated across multiple regions, it also costs higher than an LRS account (where data is replicated on the same datacenter). When you have a production environment, replication options such as GRS are highly valuable to ensure business continuity with high availability and disaster recovery. However, an LRS account might just suffice for your development environment.</li>
<li>As you can see from the <a href="https://azure.microsoft.com/pricing/details/storage/data-lake/">pricing page</a> of ADLS Gen2, your read and write transactions are billed in 4 MB increments. E.g. if you do 10,000 read operations and each file read is 16 MB in size, you will be charged for 40,000 transactions. When you have scenarios where you read a few KBs of data in a transaction, you will still be charged for the a 4 MB transaction. Optimizing for more data in a single transaction, i.e. optimizing for higher throughtput in your transactions does not just save cost, but also highly improves your performance.</li>
</ul>
<h3 id="how-do-i-monitor-my-data-lake">
How do I monitor my data lake?
<a class="anchor" href="#how-do-i-monitor-my-data-lake">#</a>
</h3>
<h3 id="how-do-i-monitor-my-data-lake">
How do I monitor my data lake?
<a class="anchor" href="#how-do-i-monitor-my-data-lake">#</a>
</h3>
<p>Understanding how your data lake is used and how it performs is a key component of operationalizing your service and ensuring it is available for use by any workloads which consume the data contained within it. This includes:</p>
<ul>
<li>Being able to audit your data lake in terms of frequent operations</li>
<li>Having visibiliy into key performace indicators such as operations with high latency</li>
<li>Undestanding common errors, the operations that caused the error, and operations which cause service-side throttling</li>
</ul>
<h4 id="key-considerations----omit-in-toc----5">
Key considerations <!-- raw HTML omitted -->
<a class="anchor" href="#key-considerations----omit-in-toc----5">#</a>
</h4>
<h4 id="key-considerations----omit-in-toc----5">
Key considerations <!-- raw HTML omitted -->
<a class="anchor" href="#key-considerations----omit-in-toc----5">#</a>
</h4>
<p>All of the telemetry for your data lake is available through <a href="https://docs.microsoft.com/azure/storage/common/monitor-storage">Azure Storage logs in Azure Monitor</a>. Azure Storage logs in Azure Monitor is a new preview feature for Azure Storage which allows for a direct integration between your storage accounts and Log Analytics, Event Hubs, and archival of logs to another storage account utilizing standard <a href="https://docs.microsoft.com/azure/azure-monitor/platform/diagnostic-settings">diagnostic settings</a>. A reference of the the full list of metrics and resources logs and their associated schema can be found in the <a href="https://docs.microsoft.com/azure/storage/common/monitor-storage-reference">Azure Storage monitoring data reference</a>.</p>
<ul>
<li>Where your choose to store your logs from Azure Storage logs becomes important when you consider how you will access it:
@ -629,10 +629,10 @@ Hadoop has a set of file formats it supports for optimized storage and processin
</ul>
</li>
</ul>
<h4 id="common-kql-queries-for-azure-storage-logs-in-azure-monitor----omit-in-toc---">
Common KQL queries for Azure Storage logs in Azure Monitor <!-- raw HTML omitted -->
<a class="anchor" href="#common-kql-queries-for-azure-storage-logs-in-azure-monitor----omit-in-toc---">#</a>
</h4>
<h4 id="common-kql-queries-for-azure-storage-logs-in-azure-monitor----omit-in-toc---">
Common KQL queries for Azure Storage logs in Azure Monitor <!-- raw HTML omitted -->
<a class="anchor" href="#common-kql-queries-for-azure-storage-logs-in-azure-monitor----omit-in-toc---">#</a>
</h4>
<p>The following queries can be used to discover insights into the performance and health of your data lake:</p>
<ul>
<li>
@ -659,10 +659,10 @@ Hadoop has a set of file formats it supports for optimized storage and processin
</code></pre></div></li>
</ul>
<p>A list of all of the built-in queries for Azure Storage logs in Azure Monitor is available in the <a href="https://github.com/microsoft/AzureMonitorCommunity">Azure Montior Community</a> on GitHub in the <a href="https://github.com/microsoft/AzureMonitorCommunity/tree/master/Azure%20Services/Storage%20accounts/Queries">Azure Services/Storage accounts/Queries</a> folder.</p>
<h2 id="optimizing-your-data-lake-for-better-scale-and-performance">
Optimizing your data lake for better scale and performance
<a class="anchor" href="#optimizing-your-data-lake-for-better-scale-and-performance">#</a>
</h2>
<h2 id="optimizing-your-data-lake-for-better-scale-and-performance">
Optimizing your data lake for better scale and performance
<a class="anchor" href="#optimizing-your-data-lake-for-better-scale-and-performance">#</a>
</h2>
<blockquote>
<p><strong>Under construction, looking for contributions</strong></p>
</blockquote>
@ -675,28 +675,28 @@ Hadoop has a set of file formats it supports for optimized storage and processin
<blockquote>
<p>Please note that the scenarios that we talk about is primarily with the focus of optimizing ADLS Gen2 performance. The overall performance of your analytics pipeline would have considerations specific to the analytics engines in addition to the storage performance consideration, our partnerships with the analytics offerings on Azure such as Azure Synapse Analytics, HDInsight and Azure Databricks ensure that we focus on making the overall experience better. In the meantime, while we call out specific engines as examples, please do note that these samples talk primarily about storage performance.</p>
</blockquote>
<h3 id="file-sizes-and-number-of-files">
File sizes and number of files
<a class="anchor" href="#file-sizes-and-number-of-files">#</a>
</h3>
<h3 id="file-sizes-and-number-of-files">
File sizes and number of files
<a class="anchor" href="#file-sizes-and-number-of-files">#</a>
</h3>
<p>Analytics engines (your ingest or data processing pipelines) incur an overhead for every file they read (related to listing, checking access and other metadata operations) and too many small files can negatively affect the performance of your overall job. Further, when you have files that are too small (in the KBs range), the amount of throughput you achieve with the I/O operations is also low, requiring more I/Os to get the data you want. In general, its a best practice to organize your data into larger sized files (target at least 100 MB or more) for better performance.</p>
<p>In a lot of cases, if your raw data (from various sources) itself is not large, you have the following options to ensure the data set your analytics engines operate on is still optimized with large file sizes.</p>
<ul>
<li>Add a data processing layer in your analytics pipeline to coalesce data from multiple small files into a large file. You can also use this opportunity to store data in a read-optimized format such as Parquet for downstream processing.</li>
<li>In the case of processing real time data, you can use a real time streaming engine (such as Azure Stream Analytics or Spark Streaming) in conjunction with a message broker (such as Event Hub or Apache Kafka) to store your data as larger files.</li>
</ul>
<h3 id="file-formats">
File Formats
<a class="anchor" href="#file-formats">#</a>
</h3>
<h3 id="file-formats">
File Formats
<a class="anchor" href="#file-formats">#</a>
</h3>
<p>As we have already talked about, optimizing your storage I/O patterns can largely benefit the overall performance of your analytics pipeline. It is worth calling out that choosing the right file format can lower your data storage costs in addition to offering better performance. Parquet is one such prevalent data format that is worth exploring for your big data analytics pipeline.</p>
<p>Apache Parquet is an open source file format that is optimized for read heavy analytics pipelines. The columnar storage structure of Parquet lets you skip over non-relevant data making your queries much more efficient. This ability to skip also results in only the data you want being sent from the storage to the analytics engine resulting in lower cost along with better performance. In addition, since the similar data types (for a column) are stored together, Parquet lends itself friendly to efficient data compression and encoding schemes lowering your data storage costs as well, compared to storing the same data in a text file format.</p>
<p><img src="images/parquet_format.PNG" alt="" /></p>
<p>Services such as <a href="https://docs.microsoft.com/azure/synapse-analytics/sql/query-parquet-files">Azure Synapse Analytics</a>, <a href="https://docs.microsoft.com/azure/databricks/delta/optimizations/delta-cache">Azure Databricks</a> and <a href="https://docs.microsoft.com/azure/data-factory/format-parquet">Azure Data Factory</a> have native functionality built in to take advantage of Parquet file formats as well.</p>
<h3 id="partitioning-schemes">
Partitioning schemes
<a class="anchor" href="#partitioning-schemes">#</a>
</h3>
<h3 id="partitioning-schemes">
Partitioning schemes
<a class="anchor" href="#partitioning-schemes">#</a>
</h3>
<p>An effective paritioning scheme for your data can imrpove the performance of your analytics pipeline and also reduce the overall transaction costs incurred with your query. In simplistic terms, partitioning is a way of organizing your data by grouping datasets with similar attributes together in a storage entity, such as a folder. When your data processing pipeline is querying for data with that similar attribute (E.g. all the data in the past 12 hours), the partitioning scheme (in this case, done by datetime) lets you skip over the irrelevant data and only seek the data that you want.</p>
<p>Let us take an example of an IoT scenario at Contoso where data is ingested real time from various sensors into the data lake. Now, you have various options of storing the data, including (but not limited to) the ones listed below :</p>
<ul>
@ -704,75 +704,75 @@ Hadoop has a set of file formats it supports for optimized storage and processin
<li>Option 2 - <code>/&lt;datetime&gt;/&lt;sensorid&gt;/&lt;temperature&gt;, /&lt;datetime&gt;/&lt;sensorid&gt;/&lt;pressure&gt;, /datetime&gt;/&lt;sensorid&gt;/&lt;humidity&gt;</code></li>
<li>Option 3 - <code>&lt;temperature&gt;/&lt;datetime&gt;/&lt;sensorid&gt;, &lt;pressure&gt;/&lt;datetime&gt;/&lt;sensorid&gt;, &lt;humidity&gt;/&lt;datetime&gt;/&lt;sensorid&gt;</code></li>
</ul>
<p>If a high priority scenario is to understand the health of the sensors based on the values they send to ensure the sensors are working fine, then you would have analytics pipelines running every hour or so to triangulate data from a specific sensor with data from other sensors to ensure they are working fine. In this case, Option 2 would be the optimal way for organizing the data.
<p>If a high priority scenario is to understand the health of the sensors based on the values they send to ensure the sensors are working fine, then you would have analytics pipelines running every hour or so to triangulate data from a specific sensor with data from other sensors to ensure they are working fine. In this case, Option 2 would be the optimal way for organizing the data.
If instead your high priority scenario is to understand the weather patterns in the area based on the sensor data to ensure what remedial action you need to take, you would have analytics pipelines running periodically to assess the weather based on the sensor data from the area. In this case, you would want to optimize for the organization by date and attribute over the sensorID.</p>
<p>Open source computing frameworks such as Apache Spark provide native support for partitioning schemes that you can leverage in your big data application.</p>
<h3 id="use-query-acceleration">
Use Query Acceleration
<a class="anchor" href="#use-query-acceleration">#</a>
</h3>
<h3 id="use-query-acceleration">
Use Query Acceleration
<a class="anchor" href="#use-query-acceleration">#</a>
</h3>
<p>Azure Data Lake Storage has a capability called <a href="https://docs.microsoft.com/azure/storage/blobs/data-lake-storage-query-acceleration#:~:text=Query%20acceleration%20%28preview%29%20is%20a,to%20perform%20a%20given%20operation">Query Acceleration</a> available in preview that is intended to optimize your performance while lowering the cost. Query acceleration lets you filter for the specific rows and columns of data that you want in your dataset by specifying one more predicates (think of these as similar to the conditions you would provide in your WHERE clause in a SQL query) and column projections (think of these as columns you would specify in the SELECT statement in your SQL query) on unstructured data.</p>
<p><img src="images/query-acceleration.png" alt="" /></p>
<p>In addition to improving performance by filtering the specific data used by the query, Query Acceleration also lowers the overall cost of your analytics pipeline by optimizing the data transferred, and hence reducing the overall storage transaction costs, and also saving you the cost of compute resources you would have otherwise spun up to read the entire dataset and filter for the subset of data that you need.</p>
<h2 id="recommended-reading">
Recommended reading
<a class="anchor" href="#recommended-reading">#</a>
</h2>
<h2 id="recommended-reading">
Recommended reading
<a class="anchor" href="#recommended-reading">#</a>
</h2>
<p><a href="https://github.com/Azure/AzureDatabricksBestPractices/blob/master/toc.md">Azure Databricks – Best Practices</a></p>
<p><a href="https://docs.microsoft.com/azure/data-factory/data-migration-guidance-hdfs-azure-storage">Use Azure Data Factory to migrate data from an on-premises Hadoop cluster to ADLS Gen2(Azure Storage)</a></p>
<p><a href="https://docs.microsoft.com/azure/data-factory/data-migration-guidance-s3-azure-storage">Use Azure Data Factory to migrate data from an AWS S3 to ADLS Gen2(Azure Storage)</a></p>
<p><a href="https://github.com/hurtn/datalake-ADLS-access-patterns-with-Databricks/blob/master/readme.md">Securing access to ADLS Gen2 from Azure Databricks</a></p>
<p><a href="https://github.com/hurtn/datalake-on-ADLS/blob/master/Understanding%20access%20control%20and%20data%20lake%20configurations%20in%20ADLS%20Gen2.md">Understanding access control and data lake configurations in ADLS Gen2</a></p>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
<hr />
Azure Storage &copy;2021 <br />
Visit the <a href="https://azure.microsoft.com/services/storage/">Azure Storage homepage</a> or read our <a href="https://docs.microsoft.com/azure/storage/">getting started guide</a>. <br />
Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStorage.com%20Feedback">azurestoragefeedback@microsoft.com</a>
<script type="text/javascript">
!function(T,l,y){var S=T.location,u="script",k="instrumentationKey",D="ingestionendpoint",C="disableExceptionTracking",E="ai.device.",I="toLowerCase",b="crossOrigin",w="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"4",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[I](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,p,l,u;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][I]()]=i[1])}if(!e[D]){var r=e.endpointsuffix,o=r?e.location:null;e[D]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[k]||d[k]||"",p=s[D],l=p?p+"/v2/track":config.endpointUrl,(u=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=l,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),u.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,l)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:w,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(w,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(u,l))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(u);n.src=h;var e=y[b];return!e&&""!==e||"undefined"==n[b]||(n[b]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(u)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[C]&&!0!==s[C]){method="onerror",t(["_"+method]);var c=T[method];T[method]=function(e,t,n,a,i){var r=c&&c(e,t,n,a,i);return!0!==r&&m["_"+method]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);(T[t]=n).queue&&0===n.queue.length&&n.trackPageView({})}(window,document,{
src: "https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "0600b273-5440-42cc-9fe4-51924c721ce0"
}});
</script>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
<hr />
Azure Storage &copy;2021 <br />
Visit the <a href="https://azure.microsoft.com/services/storage/">Azure Storage homepage</a> or read our <a href="https://docs.microsoft.com/azure/storage/">getting started guide</a>. <br />
Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStorage.com%20Feedback">azurestoragefeedback@microsoft.com</a>
<script type="text/javascript">
!function(T,l,y){var S=T.location,u="script",k="instrumentationKey",D="ingestionendpoint",C="disableExceptionTracking",E="ai.device.",I="toLowerCase",b="crossOrigin",w="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"4",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[I](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,p,l,u;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][I]()]=i[1])}if(!e[D]){var r=e.endpointsuffix,o=r?e.location:null;e[D]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[k]||d[k]||"",p=s[D],l=p?p+"/v2/track":config.endpointUrl,(u=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=l,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),u.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,l)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:w,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(w,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(u,l))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(u);n.src=h;var e=y[b];return!e&&""!==e||"undefined"==n[b]||(n[b]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(u)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[C]&&!0!==s[C]){method="onerror",t(["_"+method]);var c=T[method];T[method]=function(e,t,n,a,i){var r=c&&c(e,t,n,a,i);return!0!==r&&m["_"+method]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);(T[t]=n).queue&&0===n.queue.length&&n.trackPageView({})}(window,document,{
src: "https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "0600b273-5440-42cc-9fe4-51924c721ce0"
}});
</script>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
<nav id="TableOfContents">
<ul>
<li><a href="#when-is-adls-gen2-the-right-choice-for-your-data-lake">When is ADLS Gen2 the right choice for your data lake?</a></li>
@ -798,28 +798,28 @@ Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStor
</li>
<li><a href="#recommended-reading">Recommended reading</a></li>
</ul>
</nav>
</div>
</aside>
</main>
</body>
</html>
</nav>
</div>
</aside>
</main>
</body>
</html>

Просмотреть файл

@ -1,286 +1,286 @@
<!DOCTYPE html>
<html lang="en" dir=>
<head>
<meta name="generator" content="Hugo 0.80.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Analytics # The Hitchhiker&rsquo;s Guide to the Data Lake - As part of helping our customers build their analytics solutions on ADLS Gen2, we have a collection of considerations and key learnings that have been effective in building highly scalable and performant data lakes on Azure. We have distilled these learnings in our guidance document">
<!DOCTYPE html>
<html lang="en" dir=>
<head>
<meta name="generator" content="Hugo 0.80.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Analytics # The Hitchhiker&rsquo;s Guide to the Data Lake - As part of helping our customers build their analytics solutions on ADLS Gen2, we have a collection of considerations and key learnings that have been effective in building highly scalable and performant data lakes on Azure. We have distilled these learnings in our guidance document">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Analytics" />
<meta property="og:description" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://azure.github.io/Storage/docs/analytics/" />
<title>Analytics | Azure Storage</title>
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.e3c811d780a09e785595e36be4217a7ab952f46ef2f08e5fc30d042f67c46bf2.js" integrity="sha256-48gR14CgnnhVleNr5CF6erlS9G7y8I5fww0EL2fEa/I="></script>
<link rel="alternate" type="application/rss+xml" href="https://azure.github.io/Storage/docs/analytics/index.xml" title="Azure Storage" />
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir=>
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/Storage"><img src="/Storage/images/azure-icon.png" alt="Logo" /><span>Azure Storage</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li>
<a href="https://azure.github.io/Storage/docs/analytics/" class=" active">Analytics</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/application-and-user-data/" class="">Application and User Data</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/backup-and-archive/" class="">Backup and Archive</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/hpc-iot-and-ai/" class="">HPC IoT and AI</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/storage-partners/" class="">Storage Partners</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/tools-and-utilities/" class="">Tools and Utilities</a>
</li>
</ul>
</nav>
<script>(function(){var menu=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(event){localStorage.setItem("menu.scrollTop",menu.scrollTop);});menu.scrollTop=localStorage.getItem("menu.scrollTop");})();</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/Storage/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Analytics</strong>
<label for="toc-control">
<img src="/Storage/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav id="TableOfContents"></nav>
</aside>
</header>
<article class="markdown"><h1 id="analytics">
Analytics
<a class="anchor" href="#analytics">#</a>
</h1>
<title>Analytics | Azure Storage</title>
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.61b55b4541bc4c90e042fdb1f7deab6f1c0c90d694b30ab36fc5e6e471c61a3f.js" integrity="sha256-YbVbRUG8TJDgQv2x996rbxwMkNaUswqzb8Xm5HHGGj8="></script>
<link rel="alternate" type="application/rss+xml" href="https://azure.github.io/Storage/docs/analytics/index.xml" title="Azure Storage" />
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir=>
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/Storage"><img src="/Storage/images/azure-icon.png" alt="Logo" /><span>Azure Storage</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li>
<a href="https://azure.github.io/Storage/docs/analytics/" class=" active">Analytics</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/application-and-user-data/" class="">Application and User Data</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/backup-and-archive/" class="">Backup and Archive</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/hpc-iot-and-ai/" class="">HPC IoT and AI</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/storage-partners/" class="">Storage Partners</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/tools-and-utilities/" class="">Tools and Utilities</a>
</li>
</ul>
</nav>
<script>(function(){var menu=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(event){localStorage.setItem("menu.scrollTop",menu.scrollTop);});menu.scrollTop=localStorage.getItem("menu.scrollTop");})();</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/Storage/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Analytics</strong>
<label for="toc-control">
<img src="/Storage/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav id="TableOfContents"></nav>
</aside>
</header>
<article class="markdown"><h1 id="analytics">
Analytics
<a class="anchor" href="#analytics">#</a>
</h1>
<p><a href="./hitchhikers-guide-to-the-datalake">The Hitchhiker&rsquo;s Guide to the Data Lake</a> - As part of helping our customers build their analytics solutions on ADLS Gen2, we have a collection of considerations and key learnings that have been effective in building highly scalable and performant data lakes on Azure. We have distilled these learnings in our guidance document</p>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
<hr />
Azure Storage &copy;2021 <br />
Visit the <a href="https://azure.microsoft.com/services/storage/">Azure Storage homepage</a> or read our <a href="https://docs.microsoft.com/azure/storage/">getting started guide</a>. <br />
Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStorage.com%20Feedback">azurestoragefeedback@microsoft.com</a>
<script type="text/javascript">
!function(T,l,y){var S=T.location,u="script",k="instrumentationKey",D="ingestionendpoint",C="disableExceptionTracking",E="ai.device.",I="toLowerCase",b="crossOrigin",w="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"4",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[I](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,p,l,u;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][I]()]=i[1])}if(!e[D]){var r=e.endpointsuffix,o=r?e.location:null;e[D]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[k]||d[k]||"",p=s[D],l=p?p+"/v2/track":config.endpointUrl,(u=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=l,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),u.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,l)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:w,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(w,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(u,l))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(u);n.src=h;var e=y[b];return!e&&""!==e||"undefined"==n[b]||(n[b]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(u)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[C]&&!0!==s[C]){method="onerror",t(["_"+method]);var c=T[method];T[method]=function(e,t,n,a,i){var r=c&&c(e,t,n,a,i);return!0!==r&&m["_"+method]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);(T[t]=n).queue&&0===n.queue.length&&n.trackPageView({})}(window,document,{
src: "https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "0600b273-5440-42cc-9fe4-51924c721ce0"
}});
</script>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
<nav id="TableOfContents"></nav>
</div>
</aside>
</main>
</body>
</html>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
<hr />
Azure Storage &copy;2021 <br />
Visit the <a href="https://azure.microsoft.com/services/storage/">Azure Storage homepage</a> or read our <a href="https://docs.microsoft.com/azure/storage/">getting started guide</a>. <br />
Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStorage.com%20Feedback">azurestoragefeedback@microsoft.com</a>
<script type="text/javascript">
!function(T,l,y){var S=T.location,u="script",k="instrumentationKey",D="ingestionendpoint",C="disableExceptionTracking",E="ai.device.",I="toLowerCase",b="crossOrigin",w="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"4",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[I](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,p,l,u;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][I]()]=i[1])}if(!e[D]){var r=e.endpointsuffix,o=r?e.location:null;e[D]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[k]||d[k]||"",p=s[D],l=p?p+"/v2/track":config.endpointUrl,(u=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=l,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),u.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,l)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:w,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(w,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(u,l))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(u);n.src=h;var e=y[b];return!e&&""!==e||"undefined"==n[b]||(n[b]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(u)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[C]&&!0!==s[C]){method="onerror",t(["_"+method]);var c=T[method];T[method]=function(e,t,n,a,i){var r=c&&c(e,t,n,a,i);return!0!==r&&m["_"+method]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);(T[t]=n).queue&&0===n.queue.length&&n.trackPageView({})}(window,document,{
src: "https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "0600b273-5440-42cc-9fe4-51924c721ce0"
}});
</script>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
<nav id="TableOfContents"></nav>
</div>
</aside>
</main>
</body>
</html>

Просмотреть файл

@ -12,7 +12,7 @@
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://azure.github.io/Storage/docs/analytics/hitchhikers-guide-to-the-datalake/</guid>
<description>The Hitchhiker&#39;s Guide to the Data Lake # A comprehensive guide on key considerations involved in building your enterprise data lake
<description>The Hitchhiker&#39;s Guide to the Data Lake # A comprehensive guide on key considerations involved in building your enterprise data lake
The Hitchhiker&#39;s Guide to the Data Lake When is ADLS Gen2 the right choice for your data lake? Key considerations in designing your data lake Terminology Organizing and managing data in your data lake Do I want a centralized or a federated data lake implementation? How do I organize my data?</description>
</item>

Просмотреть файл

@ -1,218 +1,218 @@
<!DOCTYPE html>
<html lang="en" dir=>
<head>
<meta name="generator" content="Hugo 0.80.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Managing concurrent uploads in Azure blob storage with blob versioning # When you are building applications that need to have multiple clients uploading to the same object in Azure blob storage, there are several options to help you manage concurrency depending on your strategy. Concurrency strategies include:
Optimistic concurrency: An application performing an update will, as part of its update, determine whether the data has changed since the application last read that data.">
<!DOCTYPE html>
<html lang="en" dir=>
<head>
<meta name="generator" content="Hugo 0.80.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Managing concurrent uploads in Azure blob storage with blob versioning # When you are building applications that need to have multiple clients uploading to the same object in Azure blob storage, there are several options to help you manage concurrency depending on your strategy. Concurrency strategies include:
Optimistic concurrency: An application performing an update will, as part of its update, determine whether the data has changed since the application last read that data.">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Managing concurrent uploads in Azure blob storage with blob versioning" />
<meta property="og:description" content="Managing concurrent uploads in Azure blob storage with blob versioning # When you are building applications that need to have multiple clients uploading to the same object in Azure blob storage, there are several options to help you manage concurrency depending on your strategy. Concurrency strategies include:
<meta property="og:description" content="Managing concurrent uploads in Azure blob storage with blob versioning # When you are building applications that need to have multiple clients uploading to the same object in Azure blob storage, there are several options to help you manage concurrency depending on your strategy. Concurrency strategies include:
Optimistic concurrency: An application performing an update will, as part of its update, determine whether the data has changed since the application last read that data." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://azure.github.io/Storage/docs/application-and-user-data/code-samples/concurrent-uploads-with-versioning/" />
<title>Managing concurrent uploads in Azure blob storage with blob versioning | Azure Storage</title>
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.e3c811d780a09e785595e36be4217a7ab952f46ef2f08e5fc30d042f67c46bf2.js" integrity="sha256-48gR14CgnnhVleNr5CF6erlS9G7y8I5fww0EL2fEa/I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir=>
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/Storage"><img src="/Storage/images/azure-icon.png" alt="Logo" /><span>Azure Storage</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li>
<a href="https://azure.github.io/Storage/docs/analytics/" class="">Analytics</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/application-and-user-data/" class="">Application and User Data</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/backup-and-archive/" class="">Backup and Archive</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/hpc-iot-and-ai/" class="">HPC IoT and AI</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/storage-partners/" class="">Storage Partners</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/tools-and-utilities/" class="">Tools and Utilities</a>
</li>
</ul>
</nav>
<script>(function(){var menu=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(event){localStorage.setItem("menu.scrollTop",menu.scrollTop);});menu.scrollTop=localStorage.getItem("menu.scrollTop");})();</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/Storage/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Managing concurrent uploads in Azure blob storage with blob versioning</strong>
<label for="toc-control">
<img src="/Storage/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<title>Managing concurrent uploads in Azure blob storage with blob versioning | Azure Storage</title>
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.61b55b4541bc4c90e042fdb1f7deab6f1c0c90d694b30ab36fc5e6e471c61a3f.js" integrity="sha256-YbVbRUG8TJDgQv2x996rbxwMkNaUswqzb8Xm5HHGGj8="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir=>
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/Storage"><img src="/Storage/images/azure-icon.png" alt="Logo" /><span>Azure Storage</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li>
<a href="https://azure.github.io/Storage/docs/analytics/" class="">Analytics</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/application-and-user-data/" class="">Application and User Data</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/backup-and-archive/" class="">Backup and Archive</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/hpc-iot-and-ai/" class="">HPC IoT and AI</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/storage-partners/" class="">Storage Partners</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/tools-and-utilities/" class="">Tools and Utilities</a>
</li>
</ul>
</nav>
<script>(function(){var menu=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(event){localStorage.setItem("menu.scrollTop",menu.scrollTop);});menu.scrollTop=localStorage.getItem("menu.scrollTop");})();</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/Storage/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Managing concurrent uploads in Azure blob storage with blob versioning</strong>
<label for="toc-control">
<img src="/Storage/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav id="TableOfContents">
<ul>
<li><a href="#references">References</a></li>
</ul>
</nav>
</aside>
</header>
<article class="markdown"><h1 id="managing-concurrent-uploads-in-azure-blob-storage-with-blob-versioning">
Managing concurrent uploads in Azure blob storage with blob versioning
<a class="anchor" href="#managing-concurrent-uploads-in-azure-blob-storage-with-blob-versioning">#</a>
</h1>
</nav>
</aside>
</header>
<article class="markdown"><h1 id="managing-concurrent-uploads-in-azure-blob-storage-with-blob-versioning">
Managing concurrent uploads in Azure blob storage with blob versioning
<a class="anchor" href="#managing-concurrent-uploads-in-azure-blob-storage-with-blob-versioning">#</a>
</h1>
<p>When you are building applications that need to have multiple clients uploading to the same object in Azure blob storage, there are several options to help you manage concurrency depending on your strategy. Concurrency strategies include:</p>
<ul>
<li><strong><a href="https://docs.microsoft.com/azure/storage/blobs/concurrency-manage#optimistic-concurrency">Optimistic concurrency</a></strong>: An application performing an update will, as part of its update, determine whether the data has changed since the application last read that data. For example, if two users viewing a wiki page make an update to that page, then the wiki platform must ensure that the second update does not overwrite the first update. It must also ensure that both users understand whether their update was successful. This strategy is most often used in web applications.</li>
@ -318,10 +318,10 @@ https://github.com/alex-shpak/hugo-book
]
}
</code></pre></div><p>In conclusion, blob versioning allows for both multiple uploads from clients and automated deletion of data that is now longer required while retaining the base blob. Only committed data is retained and there is no need for the use of conditional headers.</p>
<h2 id="references">
References
<a class="anchor" href="#references">#</a>
</h2>
<h2 id="references">
References
<a class="anchor" href="#references">#</a>
</h2>
<ul>
<li><a href="https://docs.microsoft.com/azure/storage/blobs/concurrency-manage">Managing Concurrency in Blob storage</a></li>
<li><a href="https://docs.microsoft.com/rest/api/storageservices/blob-service-rest-api">Blob service REST API</a>
@ -335,82 +335,82 @@ https://github.com/alex-shpak/hugo-book
</li>
<li><a href="https://docs.microsoft.com/azure/storage/blobs/storage-lifecycle-management-concepts">Optimize costs by automating Azure Blob Storage access tiers</a></li>
</ul>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
<hr />
Azure Storage &copy;2021 <br />
Visit the <a href="https://azure.microsoft.com/services/storage/">Azure Storage homepage</a> or read our <a href="https://docs.microsoft.com/azure/storage/">getting started guide</a>. <br />
Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStorage.com%20Feedback">azurestoragefeedback@microsoft.com</a>
<script type="text/javascript">
!function(T,l,y){var S=T.location,u="script",k="instrumentationKey",D="ingestionendpoint",C="disableExceptionTracking",E="ai.device.",I="toLowerCase",b="crossOrigin",w="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"4",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[I](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,p,l,u;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][I]()]=i[1])}if(!e[D]){var r=e.endpointsuffix,o=r?e.location:null;e[D]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[k]||d[k]||"",p=s[D],l=p?p+"/v2/track":config.endpointUrl,(u=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=l,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),u.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,l)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:w,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(w,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(u,l))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(u);n.src=h;var e=y[b];return!e&&""!==e||"undefined"==n[b]||(n[b]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(u)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[C]&&!0!==s[C]){method="onerror",t(["_"+method]);var c=T[method];T[method]=function(e,t,n,a,i){var r=c&&c(e,t,n,a,i);return!0!==r&&m["_"+method]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);(T[t]=n).queue&&0===n.queue.length&&n.trackPageView({})}(window,document,{
src: "https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "0600b273-5440-42cc-9fe4-51924c721ce0"
}});
</script>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
<hr />
Azure Storage &copy;2021 <br />
Visit the <a href="https://azure.microsoft.com/services/storage/">Azure Storage homepage</a> or read our <a href="https://docs.microsoft.com/azure/storage/">getting started guide</a>. <br />
Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStorage.com%20Feedback">azurestoragefeedback@microsoft.com</a>
<script type="text/javascript">
!function(T,l,y){var S=T.location,u="script",k="instrumentationKey",D="ingestionendpoint",C="disableExceptionTracking",E="ai.device.",I="toLowerCase",b="crossOrigin",w="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"4",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[I](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,p,l,u;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][I]()]=i[1])}if(!e[D]){var r=e.endpointsuffix,o=r?e.location:null;e[D]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[k]||d[k]||"",p=s[D],l=p?p+"/v2/track":config.endpointUrl,(u=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=l,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),u.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,l)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:w,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(w,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(u,l))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(u);n.src=h;var e=y[b];return!e&&""!==e||"undefined"==n[b]||(n[b]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(u)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[C]&&!0!==s[C]){method="onerror",t(["_"+method]);var c=T[method];T[method]=function(e,t,n,a,i){var r=c&&c(e,t,n,a,i);return!0!==r&&m["_"+method]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);(T[t]=n).queue&&0===n.queue.length&&n.trackPageView({})}(window,document,{
src: "https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "0600b273-5440-42cc-9fe4-51924c721ce0"
}});
</script>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
<nav id="TableOfContents">
<ul>
<li><a href="#references">References</a></li>
</ul>
</nav>
</div>
</aside>
</main>
</body>
</html>
</nav>
</div>
</aside>
</main>
</body>
</html>

Просмотреть файл

@ -1,218 +1,218 @@
<!DOCTYPE html>
<html lang="en" dir=>
<head>
<meta name="generator" content="Hugo 0.80.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Azure blob storage data management and retention # When you store your data in blob storage, there are a number of policies which govern how your data is managed and retained in the event of deletion. Data management is strictly governed and Microsoft® is committed to ensuring that your data remains your data, without exception. When you delete your data - either through an API or due to a subscription being removed - there are varying policies which dictate the length of time for which your data may be retained in the event you would need to recover it.">
<!DOCTYPE html>
<html lang="en" dir=>
<head>
<meta name="generator" content="Hugo 0.80.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Azure blob storage data management and retention # When you store your data in blob storage, there are a number of policies which govern how your data is managed and retained in the event of deletion. Data management is strictly governed and Microsoft® is committed to ensuring that your data remains your data, without exception. When you delete your data - either through an API or due to a subscription being removed - there are varying policies which dictate the length of time for which your data may be retained in the event you would need to recover it.">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Azure blob storage data management and retention" />
<meta property="og:description" content="Azure blob storage data management and retention # When you store your data in blob storage, there are a number of policies which govern how your data is managed and retained in the event of deletion. Data management is strictly governed and Microsoft® is committed to ensuring that your data remains your data, without exception. When you delete your data - either through an API or due to a subscription being removed - there are varying policies which dictate the length of time for which your data may be retained in the event you would need to recover it." />
<meta property="og:description" content="Azure blob storage data management and retention # When you store your data in blob storage, there are a number of policies which govern how your data is managed and retained in the event of deletion. Data management is strictly governed and Microsoft® is committed to ensuring that your data remains your data, without exception. When you delete your data - either through an API or due to a subscription being removed - there are varying policies which dictate the length of time for which your data may be retained in the event you would need to recover it." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://azure.github.io/Storage/docs/application-and-user-data/code-samples/data-retention/" />
<title>Azure blob storage data management and retention | Azure Storage</title>
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.e3c811d780a09e785595e36be4217a7ab952f46ef2f08e5fc30d042f67c46bf2.js" integrity="sha256-48gR14CgnnhVleNr5CF6erlS9G7y8I5fww0EL2fEa/I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir=>
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/Storage"><img src="/Storage/images/azure-icon.png" alt="Logo" /><span>Azure Storage</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li>
<a href="https://azure.github.io/Storage/docs/analytics/" class="">Analytics</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/application-and-user-data/" class="">Application and User Data</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/backup-and-archive/" class="">Backup and Archive</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/hpc-iot-and-ai/" class="">HPC IoT and AI</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/storage-partners/" class="">Storage Partners</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/tools-and-utilities/" class="">Tools and Utilities</a>
</li>
</ul>
</nav>
<script>(function(){var menu=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(event){localStorage.setItem("menu.scrollTop",menu.scrollTop);});menu.scrollTop=localStorage.getItem("menu.scrollTop");})();</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/Storage/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Azure blob storage data management and retention</strong>
<label for="toc-control">
<img src="/Storage/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<title>Azure blob storage data management and retention | Azure Storage</title>
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.61b55b4541bc4c90e042fdb1f7deab6f1c0c90d694b30ab36fc5e6e471c61a3f.js" integrity="sha256-YbVbRUG8TJDgQv2x996rbxwMkNaUswqzb8Xm5HHGGj8="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir=>
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/Storage"><img src="/Storage/images/azure-icon.png" alt="Logo" /><span>Azure Storage</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li>
<a href="https://azure.github.io/Storage/docs/analytics/" class="">Analytics</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/application-and-user-data/" class="">Application and User Data</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/backup-and-archive/" class="">Backup and Archive</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/hpc-iot-and-ai/" class="">HPC IoT and AI</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/storage-partners/" class="">Storage Partners</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/tools-and-utilities/" class="">Tools and Utilities</a>
</li>
</ul>
</nav>
<script>(function(){var menu=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(event){localStorage.setItem("menu.scrollTop",menu.scrollTop);});menu.scrollTop=localStorage.getItem("menu.scrollTop");})();</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/Storage/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Azure blob storage data management and retention</strong>
<label for="toc-control">
<img src="/Storage/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav id="TableOfContents">
<ul>
<li><a href="#encryption">Encryption</a></li>
<li><a href="#prevent-accidental-deletion">Prevent accidental deletion</a></li>
<li><a href="#references">References</a></li>
</ul>
</nav>
</aside>
</header>
<article class="markdown"><h1 id="azure-blob-storage-data-management-and-retention">
Azure blob storage data management and retention
<a class="anchor" href="#azure-blob-storage-data-management-and-retention">#</a>
</h1>
</nav>
</aside>
</header>
<article class="markdown"><h1 id="azure-blob-storage-data-management-and-retention">
Azure blob storage data management and retention
<a class="anchor" href="#azure-blob-storage-data-management-and-retention">#</a>
</h1>
<p>When you store your data in blob storage, there are a number of policies which govern how your data is managed and retained in the event of deletion. Data management is strictly governed and Microsoft® is committed to ensuring that your data remains your data, without exception. When you delete your data - either through an API or due to a subscription being removed - there are varying policies which dictate the length of time for which your data may be retained in the event you would need to recover it.</p>
<p>A good place to start with understanding how your data is protected in Azure is <a href="https://docs.microsoft.com/azure/security/fundamentals/protection-customer-data">Azure customer data protection</a>. This article provides details on data protection, customer data ownership, records management, and electronic discovery (e-discovery).</p>
<p>The definitive source for understanding how your data is managed and retained in Azure and other Microsoft® services is the Online Service Terms (OST). When you subscribe to an Online Service through a Microsoft Volume Licensing program, the terms for how you can use the service are defined in the Volume Licensing Online Services Terms (OST) document and program agreement. There are also additional data processing and security terms which you should become familiar with that are defined in the Microsoft Online Services Data Protection Addendum (DPA). The DPA is an addendum to the OST. Links to the current OST and DPA in multiple languages are available on the <a href="https://www.microsoft.com/licensing/product-licensing/products?rtc=1">Licensing Terms</a> page. You can also find links to <a href="https://www.microsoftvolumelicensing.com/DocumentSearch.aspx?Mode=3&amp;DocumentTypeId=46&amp;ShowArchived=true">archived editions of the OST</a> and <a href="https://www.microsoftvolumelicensing.com/DocumentSearch.aspx?Mode=3&amp;DocumentTypeId=67">archived editions of the DPA</a> if you would like to understand how these terms have evolved over time.</p>
@ -231,10 +231,10 @@ https://github.com/alex-shpak/hugo-book
<p>If a disk drive used for storage suffers a hardware failure, it is securely erased or destroyed before Microsoft returns it to the manufacturer for replacement or repair. The data on the drive is completely overwritten to ensure the data cannot be recovered by any means.</p>
<p>When such devices are decommissioned, they are purged or destroyed according to <a href="https://go.microsoft.com/fwlink/p/?linkid=2114410">NIST 800-88 Guidelines for Media Sanitation</a>.</p>
</blockquote>
<h2 id="encryption">
Encryption
<a class="anchor" href="#encryption">#</a>
</h2>
<h2 id="encryption">
Encryption
<a class="anchor" href="#encryption">#</a>
</h2>
<p>Encryption of customer data is also addressed in public documentation, including additional controls that you can implement such as customer-managed encryption keys. <a href="https://docs.microsoft.com/azure/storage/common/storage-service-encryption">Azure Storage encryption for data at rest</a> states:</p>
<blockquote>
<p>Data in Azure Storage is encrypted and decrypted transparently using 256-bit <a href="https://en.wikipedia.org/wiki/Advanced_Encryption_Standard">AES encryption</a>, one of the strongest block ciphers available, and is FIPS 140-2 compliant. Azure Storage encryption is similar to BitLocker encryption on Windows.</p>
@ -242,15 +242,15 @@ https://github.com/alex-shpak/hugo-book
<p>Data in a storage account is encrypted regardless of performance tier (standard or premium), access tier (hot or cool), or deployment model (Azure Resource Manager or classic). All blobs in the archive tier are also encrypted. All Azure Storage redundancy options support encryption, and all data in both the primary and secondary regions is encrypted when geo-replication is enabled. All Azure Storage resources are encrypted, including blobs, disks, files, queues, and tables. All object metadata is also encrypted. There is no additional cost for Azure Storage encryption.</p>
</blockquote>
<p>Data can also be encrypted with a <a href="https://docs.microsoft.com/azure/storage/common/customer-managed-keys-overview">customer-managed key</a> when used in combination with Azure Key Vault. <a href="https://docs.microsoft.com/azure/storage/common/customer-managed-keys-overview#revoke-access-to-customer-managed-keys">Revocation of a customer-managed key</a> can be performed at any time and upon revocation client calls to the Storage APIs will fail for operations including the retrieval of blobs, updates to existing blobs.</p>
<h2 id="prevent-accidental-deletion">
Prevent accidental deletion
<a class="anchor" href="#prevent-accidental-deletion">#</a>
</h2>
<h2 id="prevent-accidental-deletion">
Prevent accidental deletion
<a class="anchor" href="#prevent-accidental-deletion">#</a>
</h2>
<p>There are also customer controls available which allow you to manage the lifecycle of your data and prevent the accidental deletion of critical information, including <a href="https://docs.microsoft.com/azure/storage/blobs/soft-delete-blob-overview">soft delete for blobs</a> and <a href="https://docs.microsoft.com/azure/storage/blobs/soft-delete-container-overview">containers</a>. It is also possible to implement <a href="https://docs.microsoft.com/azure/azure-resource-manager/management/lock-resources">resource locks</a> to prevent the accidental deletion of your storage account and the resource group it resides in. Finally, you can also recover a deleted storage account in some cases within 14 day by <a href="https://docs.microsoft.com/azure/storage/common/storage-account-recover">utilizing storage account recovery</a>.</p>
<h2 id="references">
References
<a class="anchor" href="#references">#</a>
</h2>
<h2 id="references">
References
<a class="anchor" href="#references">#</a>
</h2>
<ul>
<li><a href="https://docs.microsoft.com/azure/security/fundamentals/protection-customer-data">Azure customer data protection</a></li>
<li><a href="https://www.microsoft.com/licensing/product-licensing/products?rtc=1">Microsoft Licensing Terms</a></li>
@ -267,84 +267,84 @@ https://github.com/alex-shpak/hugo-book
<li><a href="https://docs.microsoft.com/azure/azure-resource-manager/management/lock-resources">Lock resources to prevent unexpected changes</a></li>
<li><a href="https://docs.microsoft.com/azure/storage/common/storage-account-recover">Recover a deleted storage account</a></li>
</ul>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
<hr />
Azure Storage &copy;2021 <br />
Visit the <a href="https://azure.microsoft.com/services/storage/">Azure Storage homepage</a> or read our <a href="https://docs.microsoft.com/azure/storage/">getting started guide</a>. <br />
Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStorage.com%20Feedback">azurestoragefeedback@microsoft.com</a>
<script type="text/javascript">
!function(T,l,y){var S=T.location,u="script",k="instrumentationKey",D="ingestionendpoint",C="disableExceptionTracking",E="ai.device.",I="toLowerCase",b="crossOrigin",w="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"4",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[I](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,p,l,u;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][I]()]=i[1])}if(!e[D]){var r=e.endpointsuffix,o=r?e.location:null;e[D]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[k]||d[k]||"",p=s[D],l=p?p+"/v2/track":config.endpointUrl,(u=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=l,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),u.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,l)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:w,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(w,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(u,l))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(u);n.src=h;var e=y[b];return!e&&""!==e||"undefined"==n[b]||(n[b]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(u)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[C]&&!0!==s[C]){method="onerror",t(["_"+method]);var c=T[method];T[method]=function(e,t,n,a,i){var r=c&&c(e,t,n,a,i);return!0!==r&&m["_"+method]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);(T[t]=n).queue&&0===n.queue.length&&n.trackPageView({})}(window,document,{
src: "https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "0600b273-5440-42cc-9fe4-51924c721ce0"
}});
</script>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
<hr />
Azure Storage &copy;2021 <br />
Visit the <a href="https://azure.microsoft.com/services/storage/">Azure Storage homepage</a> or read our <a href="https://docs.microsoft.com/azure/storage/">getting started guide</a>. <br />
Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStorage.com%20Feedback">azurestoragefeedback@microsoft.com</a>
<script type="text/javascript">
!function(T,l,y){var S=T.location,u="script",k="instrumentationKey",D="ingestionendpoint",C="disableExceptionTracking",E="ai.device.",I="toLowerCase",b="crossOrigin",w="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"4",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[I](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,p,l,u;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][I]()]=i[1])}if(!e[D]){var r=e.endpointsuffix,o=r?e.location:null;e[D]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[k]||d[k]||"",p=s[D],l=p?p+"/v2/track":config.endpointUrl,(u=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=l,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),u.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,l)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:w,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(w,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(u,l))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(u);n.src=h;var e=y[b];return!e&&""!==e||"undefined"==n[b]||(n[b]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(u)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[C]&&!0!==s[C]){method="onerror",t(["_"+method]);var c=T[method];T[method]=function(e,t,n,a,i){var r=c&&c(e,t,n,a,i);return!0!==r&&m["_"+method]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);(T[t]=n).queue&&0===n.queue.length&&n.trackPageView({})}(window,document,{
src: "https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "0600b273-5440-42cc-9fe4-51924c721ce0"
}});
</script>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
<nav id="TableOfContents">
<ul>
<li><a href="#encryption">Encryption</a></li>
<li><a href="#prevent-accidental-deletion">Prevent accidental deletion</a></li>
<li><a href="#references">References</a></li>
</ul>
</nav>
</div>
</aside>
</main>
</body>
</html>
</nav>
</div>
</aside>
</main>
</body>
</html>

Просмотреть файл

@ -1,212 +1,212 @@
<!DOCTYPE html>
<html lang="en" dir=>
<head>
<meta name="generator" content="Hugo 0.80.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Estimating Pricing for Azure Block Blob Deployments # We have several tools to help you price Azure Block Blob Storage, however figuring out what questions you need to answer to produce an estimate can sometimes be overwhelming. To that end we have put together this simple template. You can use the template as-is or modify it to fit your workload. Once you have the template populated you will have some estimates you can input into the Azure Pricing Calculator to get a cost estimate.">
<!DOCTYPE html>
<html lang="en" dir=>
<head>
<meta name="generator" content="Hugo 0.80.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Estimating Pricing for Azure Block Blob Deployments # We have several tools to help you price Azure Block Blob Storage, however figuring out what questions you need to answer to produce an estimate can sometimes be overwhelming. To that end we have put together this simple template. You can use the template as-is or modify it to fit your workload. Once you have the template populated you will have some estimates you can input into the Azure Pricing Calculator to get a cost estimate.">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Estimating Pricing for Azure Block Blob Deployments" />
<meta property="og:description" content="Estimating Pricing for Azure Block Blob Deployments # We have several tools to help you price Azure Block Blob Storage, however figuring out what questions you need to answer to produce an estimate can sometimes be overwhelming. To that end we have put together this simple template. You can use the template as-is or modify it to fit your workload. Once you have the template populated you will have some estimates you can input into the Azure Pricing Calculator to get a cost estimate." />
<meta property="og:description" content="Estimating Pricing for Azure Block Blob Deployments # We have several tools to help you price Azure Block Blob Storage, however figuring out what questions you need to answer to produce an estimate can sometimes be overwhelming. To that end we have put together this simple template. You can use the template as-is or modify it to fit your workload. Once you have the template populated you will have some estimates you can input into the Azure Pricing Calculator to get a cost estimate." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://azure.github.io/Storage/docs/application-and-user-data/code-samples/estimate-block-blob/" />
<title>Estimating Pricing for Azure Block Blob Deployments | Azure Storage</title>
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.e3c811d780a09e785595e36be4217a7ab952f46ef2f08e5fc30d042f67c46bf2.js" integrity="sha256-48gR14CgnnhVleNr5CF6erlS9G7y8I5fww0EL2fEa/I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir=>
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/Storage"><img src="/Storage/images/azure-icon.png" alt="Logo" /><span>Azure Storage</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li>
<a href="https://azure.github.io/Storage/docs/analytics/" class="">Analytics</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/application-and-user-data/" class="">Application and User Data</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/backup-and-archive/" class="">Backup and Archive</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/hpc-iot-and-ai/" class="">HPC IoT and AI</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/storage-partners/" class="">Storage Partners</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/tools-and-utilities/" class="">Tools and Utilities</a>
</li>
</ul>
</nav>
<script>(function(){var menu=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(event){localStorage.setItem("menu.scrollTop",menu.scrollTop);});menu.scrollTop=localStorage.getItem("menu.scrollTop");})();</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/Storage/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Estimating Pricing for Azure Block Blob Deployments</strong>
<label for="toc-control">
<img src="/Storage/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav id="TableOfContents"></nav>
</aside>
</header>
<article class="markdown"><h1 id="estimating-pricing-for-azure-block-blob-deployments">
Estimating Pricing for Azure Block Blob Deployments
<a class="anchor" href="#estimating-pricing-for-azure-block-blob-deployments">#</a>
</h1>
<title>Estimating Pricing for Azure Block Blob Deployments | Azure Storage</title>
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.61b55b4541bc4c90e042fdb1f7deab6f1c0c90d694b30ab36fc5e6e471c61a3f.js" integrity="sha256-YbVbRUG8TJDgQv2x996rbxwMkNaUswqzb8Xm5HHGGj8="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir=>
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/Storage"><img src="/Storage/images/azure-icon.png" alt="Logo" /><span>Azure Storage</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li>
<a href="https://azure.github.io/Storage/docs/analytics/" class="">Analytics</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/application-and-user-data/" class="">Application and User Data</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/backup-and-archive/" class="">Backup and Archive</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/hpc-iot-and-ai/" class="">HPC IoT and AI</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/storage-partners/" class="">Storage Partners</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/tools-and-utilities/" class="">Tools and Utilities</a>
</li>
</ul>
</nav>
<script>(function(){var menu=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(event){localStorage.setItem("menu.scrollTop",menu.scrollTop);});menu.scrollTop=localStorage.getItem("menu.scrollTop");})();</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/Storage/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Estimating Pricing for Azure Block Blob Deployments</strong>
<label for="toc-control">
<img src="/Storage/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav id="TableOfContents"></nav>
</aside>
</header>
<article class="markdown"><h1 id="estimating-pricing-for-azure-block-blob-deployments">
Estimating Pricing for Azure Block Blob Deployments
<a class="anchor" href="#estimating-pricing-for-azure-block-blob-deployments">#</a>
</h1>
<p>We have several tools to help you price Azure Block Blob Storage, however figuring out what questions you need to answer to produce an estimate can sometimes be overwhelming. To that end we have put together this simple template. You can use the template as-is or modify it to fit your workload. Once you have the template populated you will have some estimates you can input into the <a href="https://azure.microsoft.com/pricing/calculator/">Azure Pricing Calculator</a> to get a cost estimate.</p>
<blockquote>
<p>Note: The goal of this template is to give you a starting point to build an estimate. The template will provide some general estimations you can use to put into the pricing calculator. However, it makes many assumptions for simplicity. You can tweak the formulas in Excel to alter the assumptions to meet your requirements. It is not intended to be a replacement for a good architect.</p>
@ -271,78 +271,78 @@ https://github.com/alex-shpak/hugo-book
</ul>
</li>
</ol>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
<hr />
Azure Storage &copy;2021 <br />
Visit the <a href="https://azure.microsoft.com/services/storage/">Azure Storage homepage</a> or read our <a href="https://docs.microsoft.com/azure/storage/">getting started guide</a>. <br />
Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStorage.com%20Feedback">azurestoragefeedback@microsoft.com</a>
<script type="text/javascript">
!function(T,l,y){var S=T.location,u="script",k="instrumentationKey",D="ingestionendpoint",C="disableExceptionTracking",E="ai.device.",I="toLowerCase",b="crossOrigin",w="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"4",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[I](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,p,l,u;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][I]()]=i[1])}if(!e[D]){var r=e.endpointsuffix,o=r?e.location:null;e[D]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[k]||d[k]||"",p=s[D],l=p?p+"/v2/track":config.endpointUrl,(u=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=l,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),u.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,l)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:w,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(w,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(u,l))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(u);n.src=h;var e=y[b];return!e&&""!==e||"undefined"==n[b]||(n[b]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(u)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[C]&&!0!==s[C]){method="onerror",t(["_"+method]);var c=T[method];T[method]=function(e,t,n,a,i){var r=c&&c(e,t,n,a,i);return!0!==r&&m["_"+method]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);(T[t]=n).queue&&0===n.queue.length&&n.trackPageView({})}(window,document,{
src: "https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "0600b273-5440-42cc-9fe4-51924c721ce0"
}});
</script>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
<nav id="TableOfContents"></nav>
</div>
</aside>
</main>
</body>
</html>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
<hr />
Azure Storage &copy;2021 <br />
Visit the <a href="https://azure.microsoft.com/services/storage/">Azure Storage homepage</a> or read our <a href="https://docs.microsoft.com/azure/storage/">getting started guide</a>. <br />
Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStorage.com%20Feedback">azurestoragefeedback@microsoft.com</a>
<script type="text/javascript">
!function(T,l,y){var S=T.location,u="script",k="instrumentationKey",D="ingestionendpoint",C="disableExceptionTracking",E="ai.device.",I="toLowerCase",b="crossOrigin",w="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"4",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[I](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,p,l,u;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][I]()]=i[1])}if(!e[D]){var r=e.endpointsuffix,o=r?e.location:null;e[D]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[k]||d[k]||"",p=s[D],l=p?p+"/v2/track":config.endpointUrl,(u=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=l,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),u.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,l)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:w,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(w,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(u,l))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(u);n.src=h;var e=y[b];return!e&&""!==e||"undefined"==n[b]||(n[b]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(u)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[C]&&!0!==s[C]){method="onerror",t(["_"+method]);var c=T[method];T[method]=function(e,t,n,a,i){var r=c&&c(e,t,n,a,i);return!0!==r&&m["_"+method]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);(T[t]=n).queue&&0===n.queue.length&&n.trackPageView({})}(window,document,{
src: "https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "0600b273-5440-42cc-9fe4-51924c721ce0"
}});
</script>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
<nav id="TableOfContents"></nav>
</div>
</aside>
</main>
</body>
</html>

Просмотреть файл

@ -15,7 +15,7 @@
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.e3c811d780a09e785595e36be4217a7ab952f46ef2f08e5fc30d042f67c46bf2.js" integrity="sha256-48gR14CgnnhVleNr5CF6erlS9G7y8I5fww0EL2fEa/I="></script>
<script defer src="/Storage/en.search.min.61b55b4541bc4c90e042fdb1f7deab6f1c0c90d694b30ab36fc5e6e471c61a3f.js" integrity="sha256-YbVbRUG8TJDgQv2x996rbxwMkNaUswqzb8Xm5HHGGj8="></script>
<link rel="alternate" type="application/rss+xml" href="https://azure.github.io/Storage/docs/application-and-user-data/code-samples/index.xml" title="Azure Storage" />
<!--
Made with Book Theme

Просмотреть файл

@ -12,7 +12,7 @@
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://azure.github.io/Storage/docs/application-and-user-data/code-samples/data-retention/</guid>
<description>Azure blob storage data management and retention # When you store your data in blob storage, there are a number of policies which govern how your data is managed and retained in the event of deletion. Data management is strictly governed and Microsoft® is committed to ensuring that your data remains your data, without exception. When you delete your data - either through an API or due to a subscription being removed - there are varying policies which dictate the length of time for which your data may be retained in the event you would need to recover it.</description>
<description>Azure blob storage data management and retention # When you store your data in blob storage, there are a number of policies which govern how your data is managed and retained in the event of deletion. Data management is strictly governed and Microsoft® is committed to ensuring that your data remains your data, without exception. When you delete your data - either through an API or due to a subscription being removed - there are varying policies which dictate the length of time for which your data may be retained in the event you would need to recover it.</description>
</item>
<item>
@ -21,7 +21,7 @@
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://azure.github.io/Storage/docs/application-and-user-data/code-samples/supported-character-scrubber/</guid>
<description>Azure Storage Supported Character Scrubber # Azure Storage supports a wide variety of Unicode characters across containers, blobs, metadata, and snapshots. When you are migrating from another storage system to Azure, you may find that some characters supported in your source system (e.g., AWS S3) are not supported by Azure and will require an object to be renamed.
<description>Azure Storage Supported Character Scrubber # Azure Storage supports a wide variety of Unicode characters across containers, blobs, metadata, and snapshots. When you are migrating from another storage system to Azure, you may find that some characters supported in your source system (e.g., AWS S3) are not supported by Azure and will require an object to be renamed.
The PowerShell script AzureStorageSupportedCharacterScrubber.ps1 provides a turnkey solution to discovering unsupported characters in your file names with a simple CSV input.</description>
</item>
@ -31,7 +31,7 @@ The PowerShell script AzureStorageSupportedCharacterScrubber.ps1 provides a turn
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://azure.github.io/Storage/docs/application-and-user-data/code-samples/estimate-block-blob/</guid>
<description>Estimating Pricing for Azure Block Blob Deployments # We have several tools to help you price Azure Block Blob Storage, however figuring out what questions you need to answer to produce an estimate can sometimes be overwhelming. To that end we have put together this simple template. You can use the template as-is or modify it to fit your workload. Once you have the template populated you will have some estimates you can input into the Azure Pricing Calculator to get a cost estimate.</description>
<description>Estimating Pricing for Azure Block Blob Deployments # We have several tools to help you price Azure Block Blob Storage, however figuring out what questions you need to answer to produce an estimate can sometimes be overwhelming. To that end we have put together this simple template. You can use the template as-is or modify it to fit your workload. Once you have the template populated you will have some estimates you can input into the Azure Pricing Calculator to get a cost estimate.</description>
</item>
<item>
@ -40,7 +40,7 @@ The PowerShell script AzureStorageSupportedCharacterScrubber.ps1 provides a turn
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://azure.github.io/Storage/docs/application-and-user-data/code-samples/concurrent-uploads-with-versioning/</guid>
<description>Managing concurrent uploads in Azure blob storage with blob versioning # When you are building applications that need to have multiple clients uploading to the same object in Azure blob storage, there are several options to help you manage concurrency depending on your strategy. Concurrency strategies include:
<description>Managing concurrent uploads in Azure blob storage with blob versioning # When you are building applications that need to have multiple clients uploading to the same object in Azure blob storage, there are several options to help you manage concurrency depending on your strategy. Concurrency strategies include:
Optimistic concurrency: An application performing an update will, as part of its update, determine whether the data has changed since the application last read that data.</description>
</item>

Просмотреть файл

@ -1,199 +1,199 @@
<!DOCTYPE html>
<html lang="en" dir=>
<head>
<meta name="generator" content="Hugo 0.80.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Azure Storage Supported Character Scrubber # Azure Storage supports a wide variety of Unicode characters across containers, blobs, metadata, and snapshots. When you are migrating from another storage system to Azure, you may find that some characters supported in your source system (e.g., AWS S3) are not supported by Azure and will require an object to be renamed.
The PowerShell script AzureStorageSupportedCharacterScrubber.ps1 provides a turnkey solution to discovering unsupported characters in your file names with a simple CSV input.">
<!DOCTYPE html>
<html lang="en" dir=>
<head>
<meta name="generator" content="Hugo 0.80.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Azure Storage Supported Character Scrubber # Azure Storage supports a wide variety of Unicode characters across containers, blobs, metadata, and snapshots. When you are migrating from another storage system to Azure, you may find that some characters supported in your source system (e.g., AWS S3) are not supported by Azure and will require an object to be renamed.
The PowerShell script AzureStorageSupportedCharacterScrubber.ps1 provides a turnkey solution to discovering unsupported characters in your file names with a simple CSV input.">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Azure Storage Supported Character Scrubber" />
<meta property="og:description" content="Azure Storage Supported Character Scrubber # Azure Storage supports a wide variety of Unicode characters across containers, blobs, metadata, and snapshots. When you are migrating from another storage system to Azure, you may find that some characters supported in your source system (e.g., AWS S3) are not supported by Azure and will require an object to be renamed.
<meta property="og:description" content="Azure Storage Supported Character Scrubber # Azure Storage supports a wide variety of Unicode characters across containers, blobs, metadata, and snapshots. When you are migrating from another storage system to Azure, you may find that some characters supported in your source system (e.g., AWS S3) are not supported by Azure and will require an object to be renamed.
The PowerShell script AzureStorageSupportedCharacterScrubber.ps1 provides a turnkey solution to discovering unsupported characters in your file names with a simple CSV input." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://azure.github.io/Storage/docs/application-and-user-data/code-samples/supported-character-scrubber/" />
<title>Azure Storage Supported Character Scrubber | Azure Storage</title>
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.e3c811d780a09e785595e36be4217a7ab952f46ef2f08e5fc30d042f67c46bf2.js" integrity="sha256-48gR14CgnnhVleNr5CF6erlS9G7y8I5fww0EL2fEa/I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir=>
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/Storage"><img src="/Storage/images/azure-icon.png" alt="Logo" /><span>Azure Storage</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li>
<a href="https://azure.github.io/Storage/docs/analytics/" class="">Analytics</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/application-and-user-data/" class="">Application and User Data</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/backup-and-archive/" class="">Backup and Archive</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/hpc-iot-and-ai/" class="">HPC IoT and AI</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/storage-partners/" class="">Storage Partners</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/tools-and-utilities/" class="">Tools and Utilities</a>
</li>
</ul>
</nav>
<script>(function(){var menu=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(event){localStorage.setItem("menu.scrollTop",menu.scrollTop);});menu.scrollTop=localStorage.getItem("menu.scrollTop");})();</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/Storage/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Azure Storage Supported Character Scrubber</strong>
<label for="toc-control">
<img src="/Storage/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<title>Azure Storage Supported Character Scrubber | Azure Storage</title>
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.61b55b4541bc4c90e042fdb1f7deab6f1c0c90d694b30ab36fc5e6e471c61a3f.js" integrity="sha256-YbVbRUG8TJDgQv2x996rbxwMkNaUswqzb8Xm5HHGGj8="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir=>
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/Storage"><img src="/Storage/images/azure-icon.png" alt="Logo" /><span>Azure Storage</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li>
<a href="https://azure.github.io/Storage/docs/analytics/" class="">Analytics</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/application-and-user-data/" class="">Application and User Data</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/backup-and-archive/" class="">Backup and Archive</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/hpc-iot-and-ai/" class="">HPC IoT and AI</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/storage-partners/" class="">Storage Partners</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/tools-and-utilities/" class="">Tools and Utilities</a>
</li>
</ul>
</nav>
<script>(function(){var menu=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(event){localStorage.setItem("menu.scrollTop",menu.scrollTop);});menu.scrollTop=localStorage.getItem("menu.scrollTop");})();</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/Storage/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Azure Storage Supported Character Scrubber</strong>
<label for="toc-control">
<img src="/Storage/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav id="TableOfContents">
<ul>
<li><a href="#usage">Usage</a></li>
@ -207,33 +207,33 @@ https://github.com/alex-shpak/hugo-book
<li><a href="#disallowed-characters">Disallowed Characters</a></li>
<li><a href="#resources">Resources</a></li>
</ul>
</nav>
</aside>
</header>
<article class="markdown"><h1 id="azure-storage-supported-character-scrubber">
Azure Storage Supported Character Scrubber
<a class="anchor" href="#azure-storage-supported-character-scrubber">#</a>
</h1>
</nav>
</aside>
</header>
<article class="markdown"><h1 id="azure-storage-supported-character-scrubber">
Azure Storage Supported Character Scrubber
<a class="anchor" href="#azure-storage-supported-character-scrubber">#</a>
</h1>
<p>Azure Storage supports a wide variety of Unicode characters across containers, blobs, metadata, and snapshots. When you are migrating from another storage system to Azure, you may find that some characters supported in your source system (<em>e.g.,</em> AWS S3) are not supported by Azure and will require an object to be renamed.</p>
<p>The PowerShell script <a href="AzureStorageSupportedCharacterScrubber.ps1">AzureStorageSupportedCharacterScrubber.ps1</a> provides a turnkey solution to discovering unsupported characters in your file names with a simple CSV input. If you choose to rename your files to conform to Azure blob storage, you can also choose to create a mapping CSV output which can be used create your objects with a new destination file name (if required).</p>
<p>To leverage the script, you can download the sample input CSV (<a href="SourceFileNames.csv">SourceFileNames.csv</a>). This file contains a single column, <code>SourceFileName</code>. The PowerShell script will evaluate each row in the CSV and optionally create a new mapping file (<a href="FixedFileNames.csv">FixedFileNames.csv</a>) which provides alternative names by replacing unsupported characters with a valid character of your choosing.</p>
<h2 id="usage">
Usage
<a class="anchor" href="#usage">#</a>
</h2>
<h2 id="usage">
Usage
<a class="anchor" href="#usage">#</a>
</h2>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-powershell" data-lang="powershell">.\AzureStorageSupportedCharacterScrubber.ps1 -CsvInputPath .\SourceFileNames.csv -RenameItems
</code></pre></div><h2 id="sample-input">
Sample input
<a class="anchor" href="#sample-input">#</a>
</h2>
</code></pre></div><h2 id="sample-input">
Sample input
<a class="anchor" href="#sample-input">#</a>
</h2>
<table>
<thead>
<tr>
@ -246,14 +246,14 @@ https://github.com/alex-shpak/hugo-book
</tr>
</tbody>
</table>
<h2 id="sample-output">
Sample output
<a class="anchor" href="#sample-output">#</a>
</h2>
<h3 id="shell">
Shell
<a class="anchor" href="#shell">#</a>
</h3>
<h2 id="sample-output">
Sample output
<a class="anchor" href="#sample-output">#</a>
</h2>
<h3 id="shell">
Shell
<a class="anchor" href="#shell">#</a>
</h3>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-powershell" data-lang="powershell">ReplacementString not provided, using <span style="color:#66d9ef">default</span> as <span style="color:#e6db74">&#39;&#39;</span>
Testing character B (CodePoint<span style="color:#960050;background-color:#1e0010">:</span> 66)
Testing character a (CodePoint<span style="color:#960050;background-color:#1e0010">:</span> 97)
@ -288,10 +288,10 @@ Testing character d (CodePoint<span style="color:#960050;background-color:#1e001
Testing character f (CodePoint<span style="color:#960050;background-color:#1e0010">:</span> 102)
Source name<span style="color:#960050;background-color:#1e0010">:</span> BadChaÄracter <span style="color:#66d9ef">in</span> the name.pdf
Destination name<span style="color:#960050;background-color:#1e0010">:</span> BadCharacter <span style="color:#66d9ef">in</span> the name.pdf
</code></pre></div><h3 id="csv">
CSV
<a class="anchor" href="#csv">#</a>
</h3>
</code></pre></div><h3 id="csv">
CSV
<a class="anchor" href="#csv">#</a>
</h3>
<table>
<thead>
<tr>
@ -306,10 +306,10 @@ Destination name<span style="color:#960050;background-color:#1e0010">:</span> Ba
</tr>
</tbody>
</table>
<h2 id="disallowed-characters">
Disallowed Characters
<a class="anchor" href="#disallowed-characters">#</a>
</h2>
<h2 id="disallowed-characters">
Disallowed Characters
<a class="anchor" href="#disallowed-characters">#</a>
</h2>
<p>The following is a quick list of illegal characters. Note this is not an exhaustive list which the script provides.</p>
<table>
<thead>
@ -397,66 +397,66 @@ Destination name<span style="color:#960050;background-color:#1e0010">:</span> Ba
</tr>
</tbody>
</table>
<h2 id="resources">
Resources
<a class="anchor" href="#resources">#</a>
</h2>
<h2 id="resources">
Resources
<a class="anchor" href="#resources">#</a>
</h2>
<ul>
<li><a href="https://docs.microsoft.com/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata">Naming and Referencing Containers, Blobs, and Metadata</a></li>
<li><a href="https://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a></li>
<li><a href="https://www.ietf.org/rfc/rfc3987.txt">RFC 3987</a></li>
<li><a href="https://www.fileformat.info/info/unicode/">Unicode characters</a></li>
</ul>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
<hr />
Azure Storage &copy;2021 <br />
Visit the <a href="https://azure.microsoft.com/services/storage/">Azure Storage homepage</a> or read our <a href="https://docs.microsoft.com/azure/storage/">getting started guide</a>. <br />
Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStorage.com%20Feedback">azurestoragefeedback@microsoft.com</a>
<script type="text/javascript">
!function(T,l,y){var S=T.location,u="script",k="instrumentationKey",D="ingestionendpoint",C="disableExceptionTracking",E="ai.device.",I="toLowerCase",b="crossOrigin",w="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"4",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[I](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,p,l,u;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][I]()]=i[1])}if(!e[D]){var r=e.endpointsuffix,o=r?e.location:null;e[D]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[k]||d[k]||"",p=s[D],l=p?p+"/v2/track":config.endpointUrl,(u=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=l,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),u.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,l)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:w,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(w,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(u,l))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(u);n.src=h;var e=y[b];return!e&&""!==e||"undefined"==n[b]||(n[b]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(u)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[C]&&!0!==s[C]){method="onerror",t(["_"+method]);var c=T[method];T[method]=function(e,t,n,a,i){var r=c&&c(e,t,n,a,i);return!0!==r&&m["_"+method]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);(T[t]=n).queue&&0===n.queue.length&&n.trackPageView({})}(window,document,{
src: "https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "0600b273-5440-42cc-9fe4-51924c721ce0"
}});
</script>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
<hr />
Azure Storage &copy;2021 <br />
Visit the <a href="https://azure.microsoft.com/services/storage/">Azure Storage homepage</a> or read our <a href="https://docs.microsoft.com/azure/storage/">getting started guide</a>. <br />
Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStorage.com%20Feedback">azurestoragefeedback@microsoft.com</a>
<script type="text/javascript">
!function(T,l,y){var S=T.location,u="script",k="instrumentationKey",D="ingestionendpoint",C="disableExceptionTracking",E="ai.device.",I="toLowerCase",b="crossOrigin",w="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"4",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[I](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,p,l,u;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][I]()]=i[1])}if(!e[D]){var r=e.endpointsuffix,o=r?e.location:null;e[D]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[k]||d[k]||"",p=s[D],l=p?p+"/v2/track":config.endpointUrl,(u=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=l,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),u.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,l)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:w,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(w,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(u,l))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(u);n.src=h;var e=y[b];return!e&&""!==e||"undefined"==n[b]||(n[b]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(u)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[C]&&!0!==s[C]){method="onerror",t(["_"+method]);var c=T[method];T[method]=function(e,t,n,a,i){var r=c&&c(e,t,n,a,i);return!0!==r&&m["_"+method]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);(T[t]=n).queue&&0===n.queue.length&&n.trackPageView({})}(window,document,{
src: "https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "0600b273-5440-42cc-9fe4-51924c721ce0"
}});
</script>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
<nav id="TableOfContents">
<ul>
<li><a href="#usage">Usage</a></li>
@ -470,28 +470,28 @@ Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStor
<li><a href="#disallowed-characters">Disallowed Characters</a></li>
<li><a href="#resources">Resources</a></li>
</ul>
</nav>
</div>
</aside>
</main>
</body>
</html>
</nav>
</div>
</aside>
</main>
</body>
</html>

Просмотреть файл

@ -1,318 +1,318 @@
<!DOCTYPE html>
<html lang="en" dir=>
<head>
<meta name="generator" content="Hugo 0.80.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Application and User Data # Case Studies # Coming soon . . .
Code Samples # Managing concurrent uploads in Azure blob storage with blob versioning Azure blob storage data management and retention Estimating Pricing for Azure Block Blob Deployments Azure Storage Supported Character Scrubber Performance Testing # Coming soon . . .">
<!DOCTYPE html>
<html lang="en" dir=>
<head>
<meta name="generator" content="Hugo 0.80.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Application and User Data # Case Studies # Coming soon . . .
Code Samples # Managing concurrent uploads in Azure blob storage with blob versioning Azure blob storage data management and retention Estimating Pricing for Azure Block Blob Deployments Azure Storage Supported Character Scrubber Performance Testing # Coming soon . . .">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Application and User Data" />
<meta property="og:description" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://azure.github.io/Storage/docs/application-and-user-data/" />
<title>Application and User Data | Azure Storage</title>
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.e3c811d780a09e785595e36be4217a7ab952f46ef2f08e5fc30d042f67c46bf2.js" integrity="sha256-48gR14CgnnhVleNr5CF6erlS9G7y8I5fww0EL2fEa/I="></script>
<link rel="alternate" type="application/rss+xml" href="https://azure.github.io/Storage/docs/application-and-user-data/index.xml" title="Azure Storage" />
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir=>
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/Storage"><img src="/Storage/images/azure-icon.png" alt="Logo" /><span>Azure Storage</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li>
<a href="https://azure.github.io/Storage/docs/analytics/" class="">Analytics</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/application-and-user-data/" class=" active">Application and User Data</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/backup-and-archive/" class="">Backup and Archive</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/hpc-iot-and-ai/" class="">HPC IoT and AI</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/storage-partners/" class="">Storage Partners</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/tools-and-utilities/" class="">Tools and Utilities</a>
</li>
</ul>
</nav>
<script>(function(){var menu=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(event){localStorage.setItem("menu.scrollTop",menu.scrollTop);});menu.scrollTop=localStorage.getItem("menu.scrollTop");})();</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/Storage/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Application and User Data</strong>
<label for="toc-control">
<img src="/Storage/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<title>Application and User Data | Azure Storage</title>
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.61b55b4541bc4c90e042fdb1f7deab6f1c0c90d694b30ab36fc5e6e471c61a3f.js" integrity="sha256-YbVbRUG8TJDgQv2x996rbxwMkNaUswqzb8Xm5HHGGj8="></script>
<link rel="alternate" type="application/rss+xml" href="https://azure.github.io/Storage/docs/application-and-user-data/index.xml" title="Azure Storage" />
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir=>
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/Storage"><img src="/Storage/images/azure-icon.png" alt="Logo" /><span>Azure Storage</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li>
<a href="https://azure.github.io/Storage/docs/analytics/" class="">Analytics</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/application-and-user-data/" class=" active">Application and User Data</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/backup-and-archive/" class="">Backup and Archive</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/hpc-iot-and-ai/" class="">HPC IoT and AI</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/storage-partners/" class="">Storage Partners</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/tools-and-utilities/" class="">Tools and Utilities</a>
</li>
</ul>
</nav>
<script>(function(){var menu=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(event){localStorage.setItem("menu.scrollTop",menu.scrollTop);});menu.scrollTop=localStorage.getItem("menu.scrollTop");})();</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/Storage/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Application and User Data</strong>
<label for="toc-control">
<img src="/Storage/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav id="TableOfContents">
<ul>
<li><a href="#case-studies">Case Studies</a></li>
<li><a href="#code-samples">Code Samples</a></li>
<li><a href="#performance-testing">Performance Testing</a></li>
</ul>
</nav>
</aside>
</header>
<article class="markdown"><h1 id="application-and-user-data">
Application and User Data
<a class="anchor" href="#application-and-user-data">#</a>
</h1>
<h2 id="case-studies">
Case Studies
<a class="anchor" href="#case-studies">#</a>
</h2>
</nav>
</aside>
</header>
<article class="markdown"><h1 id="application-and-user-data">
Application and User Data
<a class="anchor" href="#application-and-user-data">#</a>
</h1>
<h2 id="case-studies">
Case Studies
<a class="anchor" href="#case-studies">#</a>
</h2>
<p>Coming soon . . .</p>
<h2 id="code-samples">
Code Samples
<a class="anchor" href="#code-samples">#</a>
</h2>
<h2 id="code-samples">
Code Samples
<a class="anchor" href="#code-samples">#</a>
</h2>
<ul>
<li><a href="./code-samples/concurrent-uploads-with-versioning">Managing concurrent uploads in Azure blob storage with blob versioning</a></li>
<li><a href="./code-samples/data-retention">Azure blob storage data management and retention</a></li>
<li><a href="./code-samples/estimate-block-blob">Estimating Pricing for Azure Block Blob Deployments</a></li>
<li><a href="./code-samples/supported-character-scrubber">Azure Storage Supported Character Scrubber</a></li>
</ul>
<h2 id="performance-testing">
Performance Testing
<a class="anchor" href="#performance-testing">#</a>
</h2>
<h2 id="performance-testing">
Performance Testing
<a class="anchor" href="#performance-testing">#</a>
</h2>
<p>Coming soon . . .</p>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
<hr />
Azure Storage &copy;2021 <br />
Visit the <a href="https://azure.microsoft.com/services/storage/">Azure Storage homepage</a> or read our <a href="https://docs.microsoft.com/azure/storage/">getting started guide</a>. <br />
Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStorage.com%20Feedback">azurestoragefeedback@microsoft.com</a>
<script type="text/javascript">
!function(T,l,y){var S=T.location,u="script",k="instrumentationKey",D="ingestionendpoint",C="disableExceptionTracking",E="ai.device.",I="toLowerCase",b="crossOrigin",w="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"4",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[I](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,p,l,u;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][I]()]=i[1])}if(!e[D]){var r=e.endpointsuffix,o=r?e.location:null;e[D]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[k]||d[k]||"",p=s[D],l=p?p+"/v2/track":config.endpointUrl,(u=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=l,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),u.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,l)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:w,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(w,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(u,l))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(u);n.src=h;var e=y[b];return!e&&""!==e||"undefined"==n[b]||(n[b]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(u)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[C]&&!0!==s[C]){method="onerror",t(["_"+method]);var c=T[method];T[method]=function(e,t,n,a,i){var r=c&&c(e,t,n,a,i);return!0!==r&&m["_"+method]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);(T[t]=n).queue&&0===n.queue.length&&n.trackPageView({})}(window,document,{
src: "https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "0600b273-5440-42cc-9fe4-51924c721ce0"
}});
</script>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
<hr />
Azure Storage &copy;2021 <br />
Visit the <a href="https://azure.microsoft.com/services/storage/">Azure Storage homepage</a> or read our <a href="https://docs.microsoft.com/azure/storage/">getting started guide</a>. <br />
Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStorage.com%20Feedback">azurestoragefeedback@microsoft.com</a>
<script type="text/javascript">
!function(T,l,y){var S=T.location,u="script",k="instrumentationKey",D="ingestionendpoint",C="disableExceptionTracking",E="ai.device.",I="toLowerCase",b="crossOrigin",w="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"4",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[I](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,p,l,u;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][I]()]=i[1])}if(!e[D]){var r=e.endpointsuffix,o=r?e.location:null;e[D]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[k]||d[k]||"",p=s[D],l=p?p+"/v2/track":config.endpointUrl,(u=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=l,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),u.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,l)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:w,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(w,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(u,l))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(u);n.src=h;var e=y[b];return!e&&""!==e||"undefined"==n[b]||(n[b]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(u)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[C]&&!0!==s[C]){method="onerror",t(["_"+method]);var c=T[method];T[method]=function(e,t,n,a,i){var r=c&&c(e,t,n,a,i);return!0!==r&&m["_"+method]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);(T[t]=n).queue&&0===n.queue.length&&n.trackPageView({})}(window,document,{
src: "https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "0600b273-5440-42cc-9fe4-51924c721ce0"
}});
</script>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
<nav id="TableOfContents">
<ul>
<li><a href="#case-studies">Case Studies</a></li>
<li><a href="#code-samples">Code Samples</a></li>
<li><a href="#performance-testing">Performance Testing</a></li>
</ul>
</nav>
</div>
</aside>
</main>
</body>
</html>
</nav>
</div>
</aside>
</main>
</body>
</html>

Просмотреть файл

@ -15,7 +15,7 @@
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.e3c811d780a09e785595e36be4217a7ab952f46ef2f08e5fc30d042f67c46bf2.js" integrity="sha256-48gR14CgnnhVleNr5CF6erlS9G7y8I5fww0EL2fEa/I="></script>
<script defer src="/Storage/en.search.min.61b55b4541bc4c90e042fdb1f7deab6f1c0c90d694b30ab36fc5e6e471c61a3f.js" integrity="sha256-YbVbRUG8TJDgQv2x996rbxwMkNaUswqzb8Xm5HHGGj8="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book

Просмотреть файл

@ -1,215 +1,215 @@
<!DOCTYPE html>
<html lang="en" dir=>
<head>
<meta name="generator" content="Hugo 0.80.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Backup and Archive # Backup and Archive Partners
<!DOCTYPE html>
<html lang="en" dir=>
<head>
<meta name="generator" content="Hugo 0.80.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Backup and Archive # Backup and Archive Partners
Comvault Rubrik Veeam Veritas Sample Scripts
Blob Tiering - Creates action and filter objects to apply blob tiering to block blobs matching a certain criteria. Create Storage Account - Creates a brand new resource group and storage account, based upon input variables. ">
Blob Tiering - Creates action and filter objects to apply blob tiering to block blobs matching a certain criteria. Create Storage Account - Creates a brand new resource group and storage account, based upon input variables. ">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Backup and Archive" />
<meta property="og:description" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://azure.github.io/Storage/docs/backup-and-archive/" />
<title>Backup and Archive | Azure Storage</title>
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.e3c811d780a09e785595e36be4217a7ab952f46ef2f08e5fc30d042f67c46bf2.js" integrity="sha256-48gR14CgnnhVleNr5CF6erlS9G7y8I5fww0EL2fEa/I="></script>
<link rel="alternate" type="application/rss+xml" href="https://azure.github.io/Storage/docs/backup-and-archive/index.xml" title="Azure Storage" />
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir=>
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/Storage"><img src="/Storage/images/azure-icon.png" alt="Logo" /><span>Azure Storage</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li>
<a href="https://azure.github.io/Storage/docs/analytics/" class="">Analytics</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/application-and-user-data/" class="">Application and User Data</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/backup-and-archive/" class=" active">Backup and Archive</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/hpc-iot-and-ai/" class="">HPC IoT and AI</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/storage-partners/" class="">Storage Partners</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/tools-and-utilities/" class="">Tools and Utilities</a>
</li>
</ul>
</nav>
<script>(function(){var menu=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(event){localStorage.setItem("menu.scrollTop",menu.scrollTop);});menu.scrollTop=localStorage.getItem("menu.scrollTop");})();</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/Storage/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Backup and Archive</strong>
<label for="toc-control">
<img src="/Storage/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav id="TableOfContents"></nav>
</aside>
</header>
<article class="markdown"><h1 id="backup-and-archive">
Backup and Archive
<a class="anchor" href="#backup-and-archive">#</a>
</h1>
<title>Backup and Archive | Azure Storage</title>
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.61b55b4541bc4c90e042fdb1f7deab6f1c0c90d694b30ab36fc5e6e471c61a3f.js" integrity="sha256-YbVbRUG8TJDgQv2x996rbxwMkNaUswqzb8Xm5HHGGj8="></script>
<link rel="alternate" type="application/rss+xml" href="https://azure.github.io/Storage/docs/backup-and-archive/index.xml" title="Azure Storage" />
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir=>
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/Storage"><img src="/Storage/images/azure-icon.png" alt="Logo" /><span>Azure Storage</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li>
<a href="https://azure.github.io/Storage/docs/analytics/" class="">Analytics</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/application-and-user-data/" class="">Application and User Data</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/backup-and-archive/" class=" active">Backup and Archive</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/hpc-iot-and-ai/" class="">HPC IoT and AI</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/storage-partners/" class="">Storage Partners</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/tools-and-utilities/" class="">Tools and Utilities</a>
</li>
</ul>
</nav>
<script>(function(){var menu=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(event){localStorage.setItem("menu.scrollTop",menu.scrollTop);});menu.scrollTop=localStorage.getItem("menu.scrollTop");})();</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/Storage/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Backup and Archive</strong>
<label for="toc-control">
<img src="/Storage/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav id="TableOfContents"></nav>
</aside>
</header>
<article class="markdown"><h1 id="backup-and-archive">
Backup and Archive
<a class="anchor" href="#backup-and-archive">#</a>
</h1>
<p>Backup and Archive Partners</p>
<ul>
<li><a href="./commvault">Comvault</a></li>
@ -222,78 +222,78 @@ https://github.com/alex-shpak/hugo-book
<li><a href="./sample-scripts/blob-tiering.ps1">Blob Tiering</a> - Creates action and filter objects to apply blob tiering to block blobs matching a certain criteria.</li>
<li><a href="./sample-scripts/create-storage-account.ps1">Create Storage Account</a> - Creates a brand new resource group and storage account, based upon input variables.</li>
</ul>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
<hr />
Azure Storage &copy;2021 <br />
Visit the <a href="https://azure.microsoft.com/services/storage/">Azure Storage homepage</a> or read our <a href="https://docs.microsoft.com/azure/storage/">getting started guide</a>. <br />
Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStorage.com%20Feedback">azurestoragefeedback@microsoft.com</a>
<script type="text/javascript">
!function(T,l,y){var S=T.location,u="script",k="instrumentationKey",D="ingestionendpoint",C="disableExceptionTracking",E="ai.device.",I="toLowerCase",b="crossOrigin",w="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"4",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[I](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,p,l,u;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][I]()]=i[1])}if(!e[D]){var r=e.endpointsuffix,o=r?e.location:null;e[D]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[k]||d[k]||"",p=s[D],l=p?p+"/v2/track":config.endpointUrl,(u=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=l,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),u.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,l)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:w,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(w,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(u,l))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(u);n.src=h;var e=y[b];return!e&&""!==e||"undefined"==n[b]||(n[b]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(u)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[C]&&!0!==s[C]){method="onerror",t(["_"+method]);var c=T[method];T[method]=function(e,t,n,a,i){var r=c&&c(e,t,n,a,i);return!0!==r&&m["_"+method]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);(T[t]=n).queue&&0===n.queue.length&&n.trackPageView({})}(window,document,{
src: "https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "0600b273-5440-42cc-9fe4-51924c721ce0"
}});
</script>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
<nav id="TableOfContents"></nav>
</div>
</aside>
</main>
</body>
</html>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
<hr />
Azure Storage &copy;2021 <br />
Visit the <a href="https://azure.microsoft.com/services/storage/">Azure Storage homepage</a> or read our <a href="https://docs.microsoft.com/azure/storage/">getting started guide</a>. <br />
Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStorage.com%20Feedback">azurestoragefeedback@microsoft.com</a>
<script type="text/javascript">
!function(T,l,y){var S=T.location,u="script",k="instrumentationKey",D="ingestionendpoint",C="disableExceptionTracking",E="ai.device.",I="toLowerCase",b="crossOrigin",w="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"4",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[I](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,p,l,u;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][I]()]=i[1])}if(!e[D]){var r=e.endpointsuffix,o=r?e.location:null;e[D]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[k]||d[k]||"",p=s[D],l=p?p+"/v2/track":config.endpointUrl,(u=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=l,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),u.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,l)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:w,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(w,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(u,l))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(u);n.src=h;var e=y[b];return!e&&""!==e||"undefined"==n[b]||(n[b]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(u)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[C]&&!0!==s[C]){method="onerror",t(["_"+method]);var c=T[method];T[method]=function(e,t,n,a,i){var r=c&&c(e,t,n,a,i);return!0!==r&&m["_"+method]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);(T[t]=n).queue&&0===n.queue.length&&n.trackPageView({})}(window,document,{
src: "https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "0600b273-5440-42cc-9fe4-51924c721ce0"
}});
</script>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
<nav id="TableOfContents"></nav>
</div>
</aside>
</main>
</body>
</html>

Просмотреть файл

@ -12,7 +12,7 @@
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://azure.github.io/Storage/docs/backup-and-archive/commvault/</guid>
<description>Microsoft Partner Documentation for Commvault for Azure # https://documentation.commvault.com/commvault/v11/article?p=31252.htm</description>
<description>Microsoft Partner Documentation for Commvault for Azure # https://documentation.commvault.com/commvault/v11/article?p=31252.htm</description>
</item>
<item>
@ -21,9 +21,9 @@
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://azure.github.io/Storage/docs/backup-and-archive/veritas/</guid>
<description>Microsoft Partner Documentation for Partner X # This article describes the storage options for partners.
Support Matrix # GPv2Storage CoolTier ArchiveTier WORMSupport Required AzureResources Restoreon-premises BackupAzure VM&amp;rsquo;s BackupAzure Files BackupAzure Blob X X X X X X X X Links to Marketplace Offerings # Information related to the partner marketplace links goes here.
Link 1 Link 2 Links to relevant documentation # Information related to the partner docs goes here.</description>
<description>Microsoft Partner Documentation for Partner X # This article describes the storage options for partners.
Support Matrix # GPv2Storage CoolTier ArchiveTier WORMSupport Required AzureResources Restoreon-premises BackupAzure VM&amp;rsquo;s BackupAzure Files BackupAzure Blob X X X X X X X X Links to Marketplace Offerings # Information related to the partner marketplace links goes here.
Link 1 Link 2 Links to relevant documentation # Information related to the partner docs goes here.</description>
</item>
<item>
@ -32,9 +32,9 @@ Support Matrix # GPv2Storage CoolTier ArchiveTier WORMSupport Required Azure
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://azure.github.io/Storage/docs/backup-and-archive/rubrik/</guid>
<description>Microsoft Partner Documentation for Partner X # This article describes the storage options for partners.
Support Matrix # GPv2Storage CoolTier ArchiveTier WORMSupport Required AzureResources Restoreon-premises BackupAzure VM&amp;rsquo;s BackupAzure Files BackupAzure Blob X X X X X X X X Links to Marketplace Offerings # Information related to the partner marketplace links goes here.
Link 1 Link 2 Links to relevant documentation # Information related to the partner docs goes here.</description>
<description>Microsoft Partner Documentation for Partner X # This article describes the storage options for partners.
Support Matrix # GPv2Storage CoolTier ArchiveTier WORMSupport Required AzureResources Restoreon-premises BackupAzure VM&amp;rsquo;s BackupAzure Files BackupAzure Blob X X X X X X X X Links to Marketplace Offerings # Information related to the partner marketplace links goes here.
Link 1 Link 2 Links to relevant documentation # Information related to the partner docs goes here.</description>
</item>
<item>
@ -43,7 +43,7 @@ Support Matrix # GPv2Storage CoolTier ArchiveTier WORMSupport Required Azure
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://azure.github.io/Storage/docs/backup-and-archive/veeam/</guid>
<description>Links to relevant documentation # https://www.veeam.com/documentation-guides-datasheets.html </description>
<description>Links to relevant documentation # https://www.veeam.com/documentation-guides-datasheets.html </description>
</item>
</channel>

Просмотреть файл

@ -15,7 +15,7 @@
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.e3c811d780a09e785595e36be4217a7ab952f46ef2f08e5fc30d042f67c46bf2.js" integrity="sha256-48gR14CgnnhVleNr5CF6erlS9G7y8I5fww0EL2fEa/I="></script>
<script defer src="/Storage/en.search.min.61b55b4541bc4c90e042fdb1f7deab6f1c0c90d694b30ab36fc5e6e471c61a3f.js" integrity="sha256-YbVbRUG8TJDgQv2x996rbxwMkNaUswqzb8Xm5HHGGj8="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book

Просмотреть файл

@ -15,7 +15,7 @@
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.e3c811d780a09e785595e36be4217a7ab952f46ef2f08e5fc30d042f67c46bf2.js" integrity="sha256-48gR14CgnnhVleNr5CF6erlS9G7y8I5fww0EL2fEa/I="></script>
<script defer src="/Storage/en.search.min.61b55b4541bc4c90e042fdb1f7deab6f1c0c90d694b30ab36fc5e6e471c61a3f.js" integrity="sha256-YbVbRUG8TJDgQv2x996rbxwMkNaUswqzb8Xm5HHGGj8="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book

Просмотреть файл

@ -15,7 +15,7 @@
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.e3c811d780a09e785595e36be4217a7ab952f46ef2f08e5fc30d042f67c46bf2.js" integrity="sha256-48gR14CgnnhVleNr5CF6erlS9G7y8I5fww0EL2fEa/I="></script>
<script defer src="/Storage/en.search.min.61b55b4541bc4c90e042fdb1f7deab6f1c0c90d694b30ab36fc5e6e471c61a3f.js" integrity="sha256-YbVbRUG8TJDgQv2x996rbxwMkNaUswqzb8Xm5HHGGj8="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book

Просмотреть файл

@ -1,285 +1,285 @@
<!DOCTYPE html>
<html lang="en" dir=>
<head>
<meta name="generator" content="Hugo 0.80.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="HPC IoT and AI # Coming Soon. . .">
<!DOCTYPE html>
<html lang="en" dir=>
<head>
<meta name="generator" content="Hugo 0.80.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="HPC IoT and AI # Coming Soon. . .">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="HPC IoT and AI" />
<meta property="og:description" content="HPC IoT and AI # Coming Soon. . ." />
<meta property="og:description" content="HPC IoT and AI # Coming Soon. . ." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://azure.github.io/Storage/docs/hpc-iot-and-ai/" />
<title>HPC IoT and AI | Azure Storage</title>
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.e3c811d780a09e785595e36be4217a7ab952f46ef2f08e5fc30d042f67c46bf2.js" integrity="sha256-48gR14CgnnhVleNr5CF6erlS9G7y8I5fww0EL2fEa/I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir=>
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/Storage"><img src="/Storage/images/azure-icon.png" alt="Logo" /><span>Azure Storage</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li>
<a href="https://azure.github.io/Storage/docs/analytics/" class="">Analytics</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/application-and-user-data/" class="">Application and User Data</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/backup-and-archive/" class="">Backup and Archive</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/hpc-iot-and-ai/" class=" active">HPC IoT and AI</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/storage-partners/" class="">Storage Partners</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/tools-and-utilities/" class="">Tools and Utilities</a>
</li>
</ul>
</nav>
<script>(function(){var menu=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(event){localStorage.setItem("menu.scrollTop",menu.scrollTop);});menu.scrollTop=localStorage.getItem("menu.scrollTop");})();</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/Storage/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>HPC IoT and AI</strong>
<label for="toc-control">
<img src="/Storage/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav id="TableOfContents"></nav>
</aside>
</header>
<article class="markdown"><h1 id="hpc-iot-and-ai">
HPC IoT and AI
<a class="anchor" href="#hpc-iot-and-ai">#</a>
</h1>
<title>HPC IoT and AI | Azure Storage</title>
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.61b55b4541bc4c90e042fdb1f7deab6f1c0c90d694b30ab36fc5e6e471c61a3f.js" integrity="sha256-YbVbRUG8TJDgQv2x996rbxwMkNaUswqzb8Xm5HHGGj8="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir=>
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/Storage"><img src="/Storage/images/azure-icon.png" alt="Logo" /><span>Azure Storage</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li>
<a href="https://azure.github.io/Storage/docs/analytics/" class="">Analytics</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/application-and-user-data/" class="">Application and User Data</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/backup-and-archive/" class="">Backup and Archive</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/hpc-iot-and-ai/" class=" active">HPC IoT and AI</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/storage-partners/" class="">Storage Partners</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/tools-and-utilities/" class="">Tools and Utilities</a>
</li>
</ul>
</nav>
<script>(function(){var menu=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(event){localStorage.setItem("menu.scrollTop",menu.scrollTop);});menu.scrollTop=localStorage.getItem("menu.scrollTop");})();</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/Storage/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>HPC IoT and AI</strong>
<label for="toc-control">
<img src="/Storage/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav id="TableOfContents"></nav>
</aside>
</header>
<article class="markdown"><h1 id="hpc-iot-and-ai">
HPC IoT and AI
<a class="anchor" href="#hpc-iot-and-ai">#</a>
</h1>
<p>Coming Soon. . .</p>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
<hr />
Azure Storage &copy;2021 <br />
Visit the <a href="https://azure.microsoft.com/services/storage/">Azure Storage homepage</a> or read our <a href="https://docs.microsoft.com/azure/storage/">getting started guide</a>. <br />
Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStorage.com%20Feedback">azurestoragefeedback@microsoft.com</a>
<script type="text/javascript">
!function(T,l,y){var S=T.location,u="script",k="instrumentationKey",D="ingestionendpoint",C="disableExceptionTracking",E="ai.device.",I="toLowerCase",b="crossOrigin",w="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"4",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[I](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,p,l,u;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][I]()]=i[1])}if(!e[D]){var r=e.endpointsuffix,o=r?e.location:null;e[D]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[k]||d[k]||"",p=s[D],l=p?p+"/v2/track":config.endpointUrl,(u=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=l,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),u.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,l)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:w,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(w,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(u,l))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(u);n.src=h;var e=y[b];return!e&&""!==e||"undefined"==n[b]||(n[b]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(u)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[C]&&!0!==s[C]){method="onerror",t(["_"+method]);var c=T[method];T[method]=function(e,t,n,a,i){var r=c&&c(e,t,n,a,i);return!0!==r&&m["_"+method]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);(T[t]=n).queue&&0===n.queue.length&&n.trackPageView({})}(window,document,{
src: "https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "0600b273-5440-42cc-9fe4-51924c721ce0"
}});
</script>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
<nav id="TableOfContents"></nav>
</div>
</aside>
</main>
</body>
</html>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
<hr />
Azure Storage &copy;2021 <br />
Visit the <a href="https://azure.microsoft.com/services/storage/">Azure Storage homepage</a> or read our <a href="https://docs.microsoft.com/azure/storage/">getting started guide</a>. <br />
Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStorage.com%20Feedback">azurestoragefeedback@microsoft.com</a>
<script type="text/javascript">
!function(T,l,y){var S=T.location,u="script",k="instrumentationKey",D="ingestionendpoint",C="disableExceptionTracking",E="ai.device.",I="toLowerCase",b="crossOrigin",w="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"4",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[I](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,p,l,u;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][I]()]=i[1])}if(!e[D]){var r=e.endpointsuffix,o=r?e.location:null;e[D]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[k]||d[k]||"",p=s[D],l=p?p+"/v2/track":config.endpointUrl,(u=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=l,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),u.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,l)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:w,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(w,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(u,l))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(u);n.src=h;var e=y[b];return!e&&""!==e||"undefined"==n[b]||(n[b]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(u)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[C]&&!0!==s[C]){method="onerror",t(["_"+method]);var c=T[method];T[method]=function(e,t,n,a,i){var r=c&&c(e,t,n,a,i);return!0!==r&&m["_"+method]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);(T[t]=n).queue&&0===n.queue.length&&n.trackPageView({})}(window,document,{
src: "https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "0600b273-5440-42cc-9fe4-51924c721ce0"
}});
</script>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
<nav id="TableOfContents"></nav>
</div>
</aside>
</main>
</body>
</html>

Просмотреть файл

@ -15,7 +15,7 @@
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.e3c811d780a09e785595e36be4217a7ab952f46ef2f08e5fc30d042f67c46bf2.js" integrity="sha256-48gR14CgnnhVleNr5CF6erlS9G7y8I5fww0EL2fEa/I="></script>
<script defer src="/Storage/en.search.min.61b55b4541bc4c90e042fdb1f7deab6f1c0c90d694b30ab36fc5e6e471c61a3f.js" integrity="sha256-YbVbRUG8TJDgQv2x996rbxwMkNaUswqzb8Xm5HHGGj8="></script>
<link rel="alternate" type="application/rss+xml" href="https://azure.github.io/Storage/docs/index.xml" title="Azure Storage" />
<!--
Made with Book Theme

Просмотреть файл

@ -12,7 +12,7 @@
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://azure.github.io/Storage/docs/hpc-iot-and-ai/</guid>
<description>HPC IoT and AI # Coming Soon. . .</description>
<description>HPC IoT and AI # Coming Soon. . .</description>
</item>
<item>
@ -21,7 +21,7 @@
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://azure.github.io/Storage/docs/storage-partners/</guid>
<description>Storage Partners # Archive # Acronis Archive360 Commvault HubStor Igneous Veeam Veritas Backup # Acronis Actifio Carbonite Cloudberry Cohesity Commvault Igneous Rubrik Veeam Veritas Disaster Recovery # Portworx StorageOS Zerto MultiProtocol # Caringo Cloudian Minio Scality MultiSite collaboration # Nasuni Panzura Talon Tiering # Komprise Moonwalk Peer Software Pure Storage Quantum Tools # Cloudberry Komprise Verticals # Automotive # Cognata Elektrobit Linker Networks Financial Services # Archive360 Data Parser HubStor XenData Healthcare # DNA Nexus Nucleus Health Oil &amp;amp; Gas # Cegal Interica PixStor Tiger Tech Xen Data </description>
<description>Storage Partners Acronis Actifio Carbonite Cloudberry Cohesity Commvault Igneous Rubrik Veeam Veritas Disaster Recovery Cegal Interica PixStor Tiger Tech Xen Data </description>
</item>
<item>
@ -30,7 +30,7 @@
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://azure.github.io/Storage/docs/tools-and-utilities/</guid>
<description>Tools and Utilities # AzCopy is a command-line utility that you can use to copy blobs or files to or from a storage account. AzReplicate is a sample application designed to help Azure Storage customers perform very large, multi-petabyte data migrations to Azure Blob Storage. AzDataMaker is a sample .NET Core app that runs in a Linux Azure Container Instance that generates files and uploads them to Azure Blob Storage.</description>
<description>Tools and Utilities # AzCopy is a command-line utility that you can use to copy blobs or files to or from a storage account. AzReplicate is a sample application designed to help Azure Storage customers perform very large, multi-petabyte data migrations to Azure Blob Storage. AzDataMaker is a sample .NET Core app that runs in a Linux Azure Container Instance that generates files and uploads them to Azure Blob Storage.</description>
</item>
</channel>

Просмотреть файл

@ -1,197 +1,197 @@
<!DOCTYPE html>
<html lang="en" dir=>
<head>
<meta name="generator" content="Hugo 0.80.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Storage Partners # Archive # Acronis Archive360 Commvault HubStor Igneous Veeam Veritas Backup # Acronis Actifio Carbonite Cloudberry Cohesity Commvault Igneous Rubrik Veeam Veritas Disaster Recovery # Portworx StorageOS Zerto MultiProtocol # Caringo Cloudian Minio Scality MultiSite collaboration # Nasuni Panzura Talon Tiering # Komprise Moonwalk Peer Software Pure Storage Quantum Tools # Cloudberry Komprise Verticals # Automotive # Cognata Elektrobit Linker Networks Financial Services # Archive360 Data Parser HubStor XenData Healthcare # DNA Nexus Nucleus Health Oil &amp; Gas # Cegal Interica PixStor Tiger Tech Xen Data ">
<!DOCTYPE html>
<html lang="en" dir=>
<head>
<meta name="generator" content="Hugo 0.80.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Storage Partners Portworx StorageOS Zerto MultiProtocol Cegal Interica PixStor Tiger Tech Xen Data ">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Storage Partners" />
<meta property="og:description" content="Storage Partners # Archive # Acronis Archive360 Commvault HubStor Igneous Veeam Veritas Backup # Acronis Actifio Carbonite Cloudberry Cohesity Commvault Igneous Rubrik Veeam Veritas Disaster Recovery # Portworx StorageOS Zerto MultiProtocol # Caringo Cloudian Minio Scality MultiSite collaboration # Nasuni Panzura Talon Tiering # Komprise Moonwalk Peer Software Pure Storage Quantum Tools # Cloudberry Komprise Verticals # Automotive # Cognata Elektrobit Linker Networks Financial Services # Archive360 Data Parser HubStor XenData Healthcare # DNA Nexus Nucleus Health Oil &amp; Gas # Cegal Interica PixStor Tiger Tech Xen Data " />
<meta property="og:description" content="Storage Partners Portworx StorageOS Zerto MultiProtocol Cegal Interica PixStor Tiger Tech Xen Data " />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://azure.github.io/Storage/docs/storage-partners/" />
<title>Storage Partners | Azure Storage</title>
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.e3c811d780a09e785595e36be4217a7ab952f46ef2f08e5fc30d042f67c46bf2.js" integrity="sha256-48gR14CgnnhVleNr5CF6erlS9G7y8I5fww0EL2fEa/I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir=>
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/Storage"><img src="/Storage/images/azure-icon.png" alt="Logo" /><span>Azure Storage</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li>
<a href="https://azure.github.io/Storage/docs/analytics/" class="">Analytics</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/application-and-user-data/" class="">Application and User Data</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/backup-and-archive/" class="">Backup and Archive</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/hpc-iot-and-ai/" class="">HPC IoT and AI</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/storage-partners/" class=" active">Storage Partners</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/tools-and-utilities/" class="">Tools and Utilities</a>
</li>
</ul>
</nav>
<script>(function(){var menu=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(event){localStorage.setItem("menu.scrollTop",menu.scrollTop);});menu.scrollTop=localStorage.getItem("menu.scrollTop");})();</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/Storage/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Storage Partners</strong>
<label for="toc-control">
<img src="/Storage/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<title>Storage Partners | Azure Storage</title>
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.61b55b4541bc4c90e042fdb1f7deab6f1c0c90d694b30ab36fc5e6e471c61a3f.js" integrity="sha256-YbVbRUG8TJDgQv2x996rbxwMkNaUswqzb8Xm5HHGGj8="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir=>
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/Storage"><img src="/Storage/images/azure-icon.png" alt="Logo" /><span>Azure Storage</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li>
<a href="https://azure.github.io/Storage/docs/analytics/" class="">Analytics</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/application-and-user-data/" class="">Application and User Data</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/backup-and-archive/" class="">Backup and Archive</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/hpc-iot-and-ai/" class="">HPC IoT and AI</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/storage-partners/" class=" active">Storage Partners</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/tools-and-utilities/" class="">Tools and Utilities</a>
</li>
</ul>
</nav>
<script>(function(){var menu=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(event){localStorage.setItem("menu.scrollTop",menu.scrollTop);});menu.scrollTop=localStorage.getItem("menu.scrollTop");})();</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/Storage/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Storage Partners</strong>
<label for="toc-control">
<img src="/Storage/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav id="TableOfContents">
<ul>
<li><a href="#archive">Archive</a></li>
@ -210,25 +210,25 @@ https://github.com/alex-shpak/hugo-book
</ul>
</li>
</ul>
</nav>
</aside>
</header>
<article class="markdown"><h1 id="storage-partners">
Storage Partners
<a class="anchor" href="#storage-partners">#</a>
</h1>
<h2 id="archive">
Archive
<a class="anchor" href="#archive">#</a>
</h2>
</nav>
</aside>
</header>
<article class="markdown"><h1 id="storage-partners">
Storage Partners
<a class="anchor" href="#storage-partners">#</a>
</h1>
<h2 id="archive">
Archive
<a class="anchor" href="#archive">#</a>
</h2>
<ul>
<li><a href="./partners/Archive/Acronis-Azure.pdf">Acronis</a></li>
<li><a href="./partners/Archive/Archive360-Azure.pdf">Archive360</a></li>
@ -238,10 +238,10 @@ https://github.com/alex-shpak/hugo-book
<li><a href="./partners/Archive/Veeam-Azure.pdf">Veeam</a></li>
<li><a href="./partners/Archive/Veritas-Azure.pdf">Veritas</a></li>
</ul>
<h2 id="backup">
Backup
<a class="anchor" href="#backup">#</a>
</h2>
<h2 id="backup">
Backup
<a class="anchor" href="#backup">#</a>
</h2>
<ul>
<li><a href="./partners/Backup/Acronis-Azure.pdf">Acronis</a></li>
<li><a href="./partners/Backup/Actifio-Azure.pdf">Actifio</a></li>
@ -254,38 +254,38 @@ https://github.com/alex-shpak/hugo-book
<li><a href="./partners/Backup/Veeam-Azure.pdf">Veeam</a></li>
<li><a href="./partners/Backup/Veritas-Azure.pdf">Veritas</a></li>
</ul>
<h2 id="disaster-recovery">
Disaster Recovery
<a class="anchor" href="#disaster-recovery">#</a>
</h2>
<h2 id="disaster-recovery">
Disaster Recovery
<a class="anchor" href="#disaster-recovery">#</a>
</h2>
<ul>
<li><a href="./partners/DisasterRecovery/Portworx-Azure.pdf">Portworx</a></li>
<li><a href="./partners/DisasterRecovery/StorageOS-Azure.pdf">StorageOS</a></li>
<li><a href="./partners/DisasterRecovery/Zerto-Azure.pdf">Zerto</a></li>
</ul>
<h2 id="multiprotocol">
MultiProtocol
<a class="anchor" href="#multiprotocol">#</a>
</h2>
<h2 id="multiprotocol">
MultiProtocol
<a class="anchor" href="#multiprotocol">#</a>
</h2>
<ul>
<li><a href="./partners/MultiProtocol/Caringo-Azure.pdf">Caringo</a></li>
<li><a href="./partners/MultiProtocol/Cloudian-Azure.pdf">Cloudian</a></li>
<li><a href="./partners/MultiProtocol/Minio-Azure.pdf">Minio</a></li>
<li><a href="./partners/MultiProtocol/Scality-Azure.pdf">Scality</a></li>
</ul>
<h2 id="multisite-collaboration">
MultiSite collaboration
<a class="anchor" href="#multisite-collaboration">#</a>
</h2>
<h2 id="multisite-collaboration">
MultiSite collaboration
<a class="anchor" href="#multisite-collaboration">#</a>
</h2>
<ul>
<li><a href="./partners/MultiSiteCollaboration/Nasuni-Azure.pdf">Nasuni</a></li>
<li><a href="./partners/MultiSiteCollaboration/Panzura-Azure.pdf">Panzura</a></li>
<li><a href="./partners/MultiSiteCollaboration/Talon-Azure.pdf">Talon</a></li>
</ul>
<h2 id="tiering">
Tiering
<a class="anchor" href="#tiering">#</a>
</h2>
<h2 id="tiering">
Tiering
<a class="anchor" href="#tiering">#</a>
</h2>
<ul>
<li><a href="./partners/Tiering/Komprise-Azure.pdf">Komprise</a></li>
<li><a href="./partners/Tiering/Moonwalk-Azure.pdf">Moonwalk</a></li>
@ -293,49 +293,49 @@ https://github.com/alex-shpak/hugo-book
<li><a href="./partners/Tiering/PureStorage-Azure.pdf">Pure Storage</a></li>
<li><a href="./partners/Tiering/Quantum-Azure.pdf">Quantum</a></li>
</ul>
<h2 id="tools">
Tools
<a class="anchor" href="#tools">#</a>
</h2>
<h2 id="tools">
Tools
<a class="anchor" href="#tools">#</a>
</h2>
<ul>
<li><a href="./partners/Tools/Cloudberry-Azure.pdf">Cloudberry</a></li>
<li><a href="./partners/Tools/Komprise-Azure.pdf">Komprise</a></li>
</ul>
<h2 id="verticals">
Verticals
<a class="anchor" href="#verticals">#</a>
</h2>
<h3 id="automotive">
Automotive
<a class="anchor" href="#automotive">#</a>
</h3>
<h2 id="verticals">
Verticals
<a class="anchor" href="#verticals">#</a>
</h2>
<h3 id="automotive">
Automotive
<a class="anchor" href="#automotive">#</a>
</h3>
<ul>
<li><a href="./partners/Verticals/Automotive/Cognata-Azure.pdf">Cognata</a></li>
<li><a href="./partners/Verticals/Automotive/Elektrobit-Azure.pdf">Elektrobit</a></li>
<li><a href="./partners/Verticals/Automotive/LinkerNetworks-Azure.pdf">Linker Networks</a></li>
</ul>
<h3 id="financial-services">
Financial Services
<a class="anchor" href="#financial-services">#</a>
</h3>
<h3 id="financial-services">
Financial Services
<a class="anchor" href="#financial-services">#</a>
</h3>
<ul>
<li><a href="./partners/Verticals/FinancialServices/Archive360-Azure.pdf">Archive360</a></li>
<li><a href="./partners/Verticals/FinancialServices/17a-4-Azure.pdf">Data Parser</a></li>
<li><a href="./partners/Verticals/FinancialServices/HubStor-Azure.pdf">HubStor</a></li>
<li><a href="./partners/Verticals/FinancialServices/XenData-Azure.pdf">XenData</a></li>
</ul>
<h3 id="healthcare">
Healthcare
<a class="anchor" href="#healthcare">#</a>
</h3>
<h3 id="healthcare">
Healthcare
<a class="anchor" href="#healthcare">#</a>
</h3>
<ul>
<li><a href="./partners/Verticals/Healthcare/DNAnexus-Azure.pdf">DNA Nexus</a></li>
<li><a href="./partners/Verticals/Healthcare/NucleusHealth-Azure.pdf">Nucleus Health</a></li>
</ul>
<h3 id="oil--gas">
Oil &amp; Gas
<a class="anchor" href="#oil--gas">#</a>
</h3>
<h3 id="oil--gas">
Oil &amp; Gas
<a class="anchor" href="#oil--gas">#</a>
</h3>
<ul>
<li><a href="./partners/Verticals/OilGas/Cegal-Azure.pdf">Cegal</a></li>
<li><a href="./partners/Verticals/OilGas/Interica-Azure.pdf">Interica</a></li>
@ -343,56 +343,56 @@ https://github.com/alex-shpak/hugo-book
<li><a href="./partners/Verticals/OilGas/TigerTech-Azure.pdf">Tiger Tech</a></li>
<li><a href="./partners/Verticals/OilGas/XenData-Azure.pdf">Xen Data</a></li>
</ul>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
<hr />
Azure Storage &copy;2021 <br />
Visit the <a href="https://azure.microsoft.com/services/storage/">Azure Storage homepage</a> or read our <a href="https://docs.microsoft.com/azure/storage/">getting started guide</a>. <br />
Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStorage.com%20Feedback">azurestoragefeedback@microsoft.com</a>
<script type="text/javascript">
!function(T,l,y){var S=T.location,u="script",k="instrumentationKey",D="ingestionendpoint",C="disableExceptionTracking",E="ai.device.",I="toLowerCase",b="crossOrigin",w="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"4",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[I](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,p,l,u;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][I]()]=i[1])}if(!e[D]){var r=e.endpointsuffix,o=r?e.location:null;e[D]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[k]||d[k]||"",p=s[D],l=p?p+"/v2/track":config.endpointUrl,(u=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=l,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),u.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,l)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:w,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(w,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(u,l))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(u);n.src=h;var e=y[b];return!e&&""!==e||"undefined"==n[b]||(n[b]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(u)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[C]&&!0!==s[C]){method="onerror",t(["_"+method]);var c=T[method];T[method]=function(e,t,n,a,i){var r=c&&c(e,t,n,a,i);return!0!==r&&m["_"+method]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);(T[t]=n).queue&&0===n.queue.length&&n.trackPageView({})}(window,document,{
src: "https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "0600b273-5440-42cc-9fe4-51924c721ce0"
}});
</script>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
<hr />
Azure Storage &copy;2021 <br />
Visit the <a href="https://azure.microsoft.com/services/storage/">Azure Storage homepage</a> or read our <a href="https://docs.microsoft.com/azure/storage/">getting started guide</a>. <br />
Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStorage.com%20Feedback">azurestoragefeedback@microsoft.com</a>
<script type="text/javascript">
!function(T,l,y){var S=T.location,u="script",k="instrumentationKey",D="ingestionendpoint",C="disableExceptionTracking",E="ai.device.",I="toLowerCase",b="crossOrigin",w="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"4",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[I](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,p,l,u;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][I]()]=i[1])}if(!e[D]){var r=e.endpointsuffix,o=r?e.location:null;e[D]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[k]||d[k]||"",p=s[D],l=p?p+"/v2/track":config.endpointUrl,(u=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=l,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),u.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,l)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:w,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(w,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(u,l))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(u);n.src=h;var e=y[b];return!e&&""!==e||"undefined"==n[b]||(n[b]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(u)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[C]&&!0!==s[C]){method="onerror",t(["_"+method]);var c=T[method];T[method]=function(e,t,n,a,i){var r=c&&c(e,t,n,a,i);return!0!==r&&m["_"+method]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);(T[t]=n).queue&&0===n.queue.length&&n.trackPageView({})}(window,document,{
src: "https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "0600b273-5440-42cc-9fe4-51924c721ce0"
}});
</script>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
<nav id="TableOfContents">
<ul>
<li><a href="#archive">Archive</a></li>
@ -411,28 +411,28 @@ Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStor
</ul>
</li>
</ul>
</nav>
</div>
</aside>
</main>
</body>
</html>
</nav>
</div>
</aside>
</main>
</body>
</html>

Просмотреть файл

@ -1,289 +1,289 @@
<!DOCTYPE html>
<html lang="en" dir=>
<head>
<meta name="generator" content="Hugo 0.80.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Tools and Utilities # AzCopy is a command-line utility that you can use to copy blobs or files to or from a storage account. AzReplicate is a sample application designed to help Azure Storage customers perform very large, multi-petabyte data migrations to Azure Blob Storage. AzDataMaker is a sample .NET Core app that runs in a Linux Azure Container Instance that generates files and uploads them to Azure Blob Storage.">
<!DOCTYPE html>
<html lang="en" dir=>
<head>
<meta name="generator" content="Hugo 0.80.0" />
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Tools and Utilities # AzCopy is a command-line utility that you can use to copy blobs or files to or from a storage account. AzReplicate is a sample application designed to help Azure Storage customers perform very large, multi-petabyte data migrations to Azure Blob Storage. AzDataMaker is a sample .NET Core app that runs in a Linux Azure Container Instance that generates files and uploads them to Azure Blob Storage.">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Tools and Utilities" />
<meta property="og:description" content="Tools and Utilities # AzCopy is a command-line utility that you can use to copy blobs or files to or from a storage account. AzReplicate is a sample application designed to help Azure Storage customers perform very large, multi-petabyte data migrations to Azure Blob Storage. AzDataMaker is a sample .NET Core app that runs in a Linux Azure Container Instance that generates files and uploads them to Azure Blob Storage." />
<meta property="og:description" content="Tools and Utilities # AzCopy is a command-line utility that you can use to copy blobs or files to or from a storage account. AzReplicate is a sample application designed to help Azure Storage customers perform very large, multi-petabyte data migrations to Azure Blob Storage. AzDataMaker is a sample .NET Core app that runs in a Linux Azure Container Instance that generates files and uploads them to Azure Blob Storage." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://azure.github.io/Storage/docs/tools-and-utilities/" />
<title>Tools and Utilities | Azure Storage</title>
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.e3c811d780a09e785595e36be4217a7ab952f46ef2f08e5fc30d042f67c46bf2.js" integrity="sha256-48gR14CgnnhVleNr5CF6erlS9G7y8I5fww0EL2fEa/I="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir=>
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/Storage"><img src="/Storage/images/azure-icon.png" alt="Logo" /><span>Azure Storage</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li>
<a href="https://azure.github.io/Storage/docs/analytics/" class="">Analytics</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/application-and-user-data/" class="">Application and User Data</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/backup-and-archive/" class="">Backup and Archive</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/hpc-iot-and-ai/" class="">HPC IoT and AI</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/storage-partners/" class="">Storage Partners</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/tools-and-utilities/" class=" active">Tools and Utilities</a>
</li>
</ul>
</nav>
<script>(function(){var menu=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(event){localStorage.setItem("menu.scrollTop",menu.scrollTop);});menu.scrollTop=localStorage.getItem("menu.scrollTop");})();</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/Storage/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Tools and Utilities</strong>
<label for="toc-control">
<img src="/Storage/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav id="TableOfContents"></nav>
</aside>
</header>
<article class="markdown"><h1 id="tools-and-utilities">
Tools and Utilities
<a class="anchor" href="#tools-and-utilities">#</a>
</h1>
<title>Tools and Utilities | Azure Storage</title>
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.61b55b4541bc4c90e042fdb1f7deab6f1c0c90d694b30ab36fc5e6e471c61a3f.js" integrity="sha256-YbVbRUG8TJDgQv2x996rbxwMkNaUswqzb8Xm5HHGGj8="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir=>
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a href="/Storage"><img src="/Storage/images/azure-icon.png" alt="Logo" /><span>Azure Storage</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul>
<li>
<a href="https://azure.github.io/Storage/docs/analytics/" class="">Analytics</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/application-and-user-data/" class="">Application and User Data</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/backup-and-archive/" class="">Backup and Archive</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/hpc-iot-and-ai/" class="">HPC IoT and AI</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/storage-partners/" class="">Storage Partners</a>
</li>
<li>
<a href="https://azure.github.io/Storage/docs/tools-and-utilities/" class=" active">Tools and Utilities</a>
</li>
</ul>
</nav>
<script>(function(){var menu=document.querySelector("aside.book-menu nav");addEventListener("beforeunload",function(event){localStorage.setItem("menu.scrollTop",menu.scrollTop);});menu.scrollTop=localStorage.getItem("menu.scrollTop");})();</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/Storage/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>Tools and Utilities</strong>
<label for="toc-control">
<img src="/Storage/svg/toc.svg" class="book-icon" alt="Table of Contents" />
</label>
</div>
<aside class="hidden clearfix">
<nav id="TableOfContents"></nav>
</aside>
</header>
<article class="markdown"><h1 id="tools-and-utilities">
Tools and Utilities
<a class="anchor" href="#tools-and-utilities">#</a>
</h1>
<ul>
<li><a href="http://aka.ms/AzCopy">AzCopy</a> is a command-line utility that you can use to copy blobs or files to or from a storage account.</li>
<li><a href="https://aka.ms/AzReplicate">AzReplicate</a> is a sample application designed to help Azure Storage customers perform very large, multi-petabyte data migrations to Azure Blob Storage.</li>
<li><a href="https://aka.ms/AzDataMaker">AzDataMaker</a> is a sample .NET Core app that runs in a Linux Azure Container Instance that generates files and uploads them to Azure Blob Storage.</li>
</ul>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
<hr />
Azure Storage &copy;2021 <br />
Visit the <a href="https://azure.microsoft.com/services/storage/">Azure Storage homepage</a> or read our <a href="https://docs.microsoft.com/azure/storage/">getting started guide</a>. <br />
Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStorage.com%20Feedback">azurestoragefeedback@microsoft.com</a>
<script type="text/javascript">
!function(T,l,y){var S=T.location,u="script",k="instrumentationKey",D="ingestionendpoint",C="disableExceptionTracking",E="ai.device.",I="toLowerCase",b="crossOrigin",w="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"4",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[I](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,p,l,u;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][I]()]=i[1])}if(!e[D]){var r=e.endpointsuffix,o=r?e.location:null;e[D]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[k]||d[k]||"",p=s[D],l=p?p+"/v2/track":config.endpointUrl,(u=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=l,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),u.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,l)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:w,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(w,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(u,l))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(u);n.src=h;var e=y[b];return!e&&""!==e||"undefined"==n[b]||(n[b]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(u)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[C]&&!0!==s[C]){method="onerror",t(["_"+method]);var c=T[method];T[method]=function(e,t,n,a,i){var r=c&&c(e,t,n,a,i);return!0!==r&&m["_"+method]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);(T[t]=n).queue&&0===n.queue.length&&n.trackPageView({})}(window,document,{
src: "https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "0600b273-5440-42cc-9fe4-51924c721ce0"
}});
</script>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
<nav id="TableOfContents"></nav>
</div>
</aside>
</main>
</body>
</html>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
</div>
<hr />
Azure Storage &copy;2021 <br />
Visit the <a href="https://azure.microsoft.com/services/storage/">Azure Storage homepage</a> or read our <a href="https://docs.microsoft.com/azure/storage/">getting started guide</a>. <br />
Contact us: <a href="mailto:azurestoragefeedback@microsoft.com?subject=AzureStorage.com%20Feedback">azurestoragefeedback@microsoft.com</a>
<script type="text/javascript">
!function(T,l,y){var S=T.location,u="script",k="instrumentationKey",D="ingestionendpoint",C="disableExceptionTracking",E="ai.device.",I="toLowerCase",b="crossOrigin",w="POST",e="appInsightsSDK",t=y.name||"appInsights";(y.name||T[e])&&(T[e]=t);var n=T[t]||function(d){var g=!1,f=!1,m={initialize:!0,queue:[],sv:"4",version:2,config:d};function v(e,t){var n={},a="Browser";return n[E+"id"]=a[I](),n[E+"type"]=a,n["ai.operation.name"]=S&&S.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(m.sv||m.version),{time:function(){var e=new Date;function t(e){var t=""+e;return 1===t.length&&(t="0"+t),t}return e.getUTCFullYear()+"-"+t(1+e.getUTCMonth())+"-"+t(e.getUTCDate())+"T"+t(e.getUTCHours())+":"+t(e.getUTCMinutes())+":"+t(e.getUTCSeconds())+"."+((e.getUTCMilliseconds()/1e3).toFixed(3)+"").slice(2,5)+"Z"}(),iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}}}}var h=d.url||y.src;if(h){function a(e){var t,n,a,i,r,o,s,c,p,l,u;g=!0,m.queue=[],f||(f=!0,t=h,s=function(){var e={},t=d.connectionString;if(t)for(var n=t.split(";"),a=0;a<n.length;a++){var i=n[a].split("=");2===i.length&&(e[i[0][I]()]=i[1])}if(!e[D]){var r=e.endpointsuffix,o=r?e.location:null;e[D]="https://"+(o?o+".":"")+"dc."+(r||"services.visualstudio.com")}return e}(),c=s[k]||d[k]||"",p=s[D],l=p?p+"/v2/track":config.endpointUrl,(u=[]).push((n="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",a=t,i=l,(o=(r=v(c,"Exception")).data).baseType="ExceptionData",o.baseData.exceptions=[{typeName:"SDKLoadFailed",message:n.replace(/\./g,"-"),hasFullStack:!1,stack:n+"\nSnippet failed to load ["+a+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(S&&S.pathname||"_unknown_")+"\nEndpoint: "+i,parsedStack:[]}],r)),u.push(function(e,t,n,a){var i=v(c,"Message"),r=i.data;r.baseType="MessageData";var o=r.baseData;return o.message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+n+")").replace(/\"/g,"")+'"',o.properties={endpoint:a},i}(0,0,t,l)),function(e,t){if(JSON){var n=T.fetch;if(n&&!y.useXhr)n(t,{method:w,body:JSON.stringify(e),mode:"cors"});else if(XMLHttpRequest){var a=new XMLHttpRequest;a.open(w,t),a.setRequestHeader("Content-type","application/json"),a.send(JSON.stringify(e))}}}(u,l))}function i(e,t){f||setTimeout(function(){!t&&m.core||a()},500)}var e=function(){var n=l.createElement(u);n.src=h;var e=y[b];return!e&&""!==e||"undefined"==n[b]||(n[b]=e),n.onload=i,n.onerror=a,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||i(0,t)},n}();y.ld<0?l.getElementsByTagName("head")[0].appendChild(e):setTimeout(function(){l.getElementsByTagName(u)[0].parentNode.appendChild(e)},y.ld||0)}try{m.cookie=l.cookie}catch(p){}function t(e){for(;e.length;)!function(t){m[t]=function(){var e=arguments;g||m.queue.push(function(){m[t].apply(m,e)})}}(e.pop())}var n="track",r="TrackPage",o="TrackEvent";t([n+"Event",n+"PageView",n+"Exception",n+"Trace",n+"DependencyData",n+"Metric",n+"PageViewPerformance","start"+r,"stop"+r,"start"+o,"stop"+o,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),m.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4};var s=(d.extensionConfig||{}).ApplicationInsightsAnalytics||{};if(!0!==d[C]&&!0!==s[C]){method="onerror",t(["_"+method]);var c=T[method];T[method]=function(e,t,n,a,i){var r=c&&c(e,t,n,a,i);return!0!==r&&m["_"+method]({message:e,url:t,lineNumber:n,columnNumber:a,error:i}),r},d.autoExceptionInstrumented=!0}return m}(y.cfg);(T[t]=n).queue&&0===n.queue.length&&n.trackPageView({})}(window,document,{
src: "https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js",
cfg: {
instrumentationKey: "0600b273-5440-42cc-9fe4-51924c721ce0"
}});
</script>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
<aside class="book-toc">
<div class="book-toc-content">
<nav id="TableOfContents"></nav>
</div>
</aside>
</main>
</body>
</html>

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -0,0 +1,11 @@
'use strict';(function(){const input=document.querySelector('#book-search-input');const results=document.querySelector('#book-search-results');if(!input){return}
input.addEventListener('focus',init);input.addEventListener('keyup',search);document.addEventListener('keypress',focusSearchFieldOnKeyPress);function focusSearchFieldOnKeyPress(event){if(input===document.activeElement){return;}
const characterPressed=String.fromCharCode(event.charCode);if(!isHotkey(characterPressed)){return;}
input.focus();event.preventDefault();}
function isHotkey(character){const dataHotkeys=input.getAttribute('data-hotkeys')||'';return dataHotkeys.indexOf(character)>=0;}
function init(){input.removeEventListener('focus',init);input.required=true;loadScript('/Storage/flexsearch.min.js');loadScript('/Storage/en.search-data.min.b1da559526ae7b2a13f60da280fac54dd29e540a764c59d04182baac24167ac8.js',function(){input.required=false;search();});}
function search(){while(results.firstChild){results.removeChild(results.firstChild);}
if(!input.value){return;}
const searchHits=window.bookSearchIndex.search(input.value,10);searchHits.forEach(function(page){const li=element('<li><a href></a><small></small></li>');const a=li.querySelector('a'),small=li.querySelector('small');a.href=page.href;a.textContent=page.title;small.textContent=page.section;results.appendChild(li);});}
function loadScript(src,callback){const script=document.createElement('script');script.defer=true;script.async=false;script.src=src;script.onload=callback;document.head.appendChild(script);}
function element(content){const div=document.createElement('div');div.innerHTML=content;return div.firstChild;}})();

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -12,7 +12,7 @@
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://azure.github.io/Storage/docs/application-and-user-data/code-samples/data-retention/</guid>
<description>Azure blob storage data management and retention # When you store your data in blob storage, there are a number of policies which govern how your data is managed and retained in the event of deletion. Data management is strictly governed and Microsoft® is committed to ensuring that your data remains your data, without exception. When you delete your data - either through an API or due to a subscription being removed - there are varying policies which dictate the length of time for which your data may be retained in the event you would need to recover it.</description>
<description>Azure blob storage data management and retention # When you store your data in blob storage, there are a number of policies which govern how your data is managed and retained in the event of deletion. Data management is strictly governed and Microsoft® is committed to ensuring that your data remains your data, without exception. When you delete your data - either through an API or due to a subscription being removed - there are varying policies which dictate the length of time for which your data may be retained in the event you would need to recover it.</description>
</item>
<item>
@ -21,7 +21,7 @@
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://azure.github.io/Storage/docs/backup-and-archive/commvault/</guid>
<description>Microsoft Partner Documentation for Commvault for Azure # https://documentation.commvault.com/commvault/v11/article?p=31252.htm</description>
<description>Microsoft Partner Documentation for Commvault for Azure # https://documentation.commvault.com/commvault/v11/article?p=31252.htm</description>
</item>
<item>
@ -30,9 +30,9 @@
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://azure.github.io/Storage/docs/backup-and-archive/veritas/</guid>
<description>Microsoft Partner Documentation for Partner X # This article describes the storage options for partners.
Support Matrix # GPv2Storage CoolTier ArchiveTier WORMSupport Required AzureResources Restoreon-premises BackupAzure VM&amp;rsquo;s BackupAzure Files BackupAzure Blob X X X X X X X X Links to Marketplace Offerings # Information related to the partner marketplace links goes here.
Link 1 Link 2 Links to relevant documentation # Information related to the partner docs goes here.</description>
<description>Microsoft Partner Documentation for Partner X # This article describes the storage options for partners.
Support Matrix # GPv2Storage CoolTier ArchiveTier WORMSupport Required AzureResources Restoreon-premises BackupAzure VM&amp;rsquo;s BackupAzure Files BackupAzure Blob X X X X X X X X Links to Marketplace Offerings # Information related to the partner marketplace links goes here.
Link 1 Link 2 Links to relevant documentation # Information related to the partner docs goes here.</description>
</item>
<item>
@ -41,9 +41,9 @@ Support Matrix # GPv2Storage CoolTier ArchiveTier WORMSupport Required Azure
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://azure.github.io/Storage/docs/backup-and-archive/rubrik/</guid>
<description>Microsoft Partner Documentation for Partner X # This article describes the storage options for partners.
Support Matrix # GPv2Storage CoolTier ArchiveTier WORMSupport Required AzureResources Restoreon-premises BackupAzure VM&amp;rsquo;s BackupAzure Files BackupAzure Blob X X X X X X X X Links to Marketplace Offerings # Information related to the partner marketplace links goes here.
Link 1 Link 2 Links to relevant documentation # Information related to the partner docs goes here.</description>
<description>Microsoft Partner Documentation for Partner X # This article describes the storage options for partners.
Support Matrix # GPv2Storage CoolTier ArchiveTier WORMSupport Required AzureResources Restoreon-premises BackupAzure VM&amp;rsquo;s BackupAzure Files BackupAzure Blob X X X X X X X X Links to Marketplace Offerings # Information related to the partner marketplace links goes here.
Link 1 Link 2 Links to relevant documentation # Information related to the partner docs goes here.</description>
</item>
<item>
@ -52,7 +52,7 @@ Support Matrix # GPv2Storage CoolTier ArchiveTier WORMSupport Required Azure
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://azure.github.io/Storage/docs/backup-and-archive/veeam/</guid>
<description>Links to relevant documentation # https://www.veeam.com/documentation-guides-datasheets.html </description>
<description>Links to relevant documentation # https://www.veeam.com/documentation-guides-datasheets.html </description>
</item>
<item>
@ -61,7 +61,7 @@ Support Matrix # GPv2Storage CoolTier ArchiveTier WORMSupport Required Azure
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://azure.github.io/Storage/docs/application-and-user-data/code-samples/supported-character-scrubber/</guid>
<description>Azure Storage Supported Character Scrubber # Azure Storage supports a wide variety of Unicode characters across containers, blobs, metadata, and snapshots. When you are migrating from another storage system to Azure, you may find that some characters supported in your source system (e.g., AWS S3) are not supported by Azure and will require an object to be renamed.
<description>Azure Storage Supported Character Scrubber # Azure Storage supports a wide variety of Unicode characters across containers, blobs, metadata, and snapshots. When you are migrating from another storage system to Azure, you may find that some characters supported in your source system (e.g., AWS S3) are not supported by Azure and will require an object to be renamed.
The PowerShell script AzureStorageSupportedCharacterScrubber.ps1 provides a turnkey solution to discovering unsupported characters in your file names with a simple CSV input.</description>
</item>
@ -71,7 +71,7 @@ The PowerShell script AzureStorageSupportedCharacterScrubber.ps1 provides a turn
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://azure.github.io/Storage/docs/application-and-user-data/code-samples/estimate-block-blob/</guid>
<description>Estimating Pricing for Azure Block Blob Deployments # We have several tools to help you price Azure Block Blob Storage, however figuring out what questions you need to answer to produce an estimate can sometimes be overwhelming. To that end we have put together this simple template. You can use the template as-is or modify it to fit your workload. Once you have the template populated you will have some estimates you can input into the Azure Pricing Calculator to get a cost estimate.</description>
<description>Estimating Pricing for Azure Block Blob Deployments # We have several tools to help you price Azure Block Blob Storage, however figuring out what questions you need to answer to produce an estimate can sometimes be overwhelming. To that end we have put together this simple template. You can use the template as-is or modify it to fit your workload. Once you have the template populated you will have some estimates you can input into the Azure Pricing Calculator to get a cost estimate.</description>
</item>
<item>
@ -80,7 +80,7 @@ The PowerShell script AzureStorageSupportedCharacterScrubber.ps1 provides a turn
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://azure.github.io/Storage/docs/hpc-iot-and-ai/</guid>
<description>HPC IoT and AI # Coming Soon. . .</description>
<description>HPC IoT and AI # Coming Soon. . .</description>
</item>
<item>
@ -89,7 +89,7 @@ The PowerShell script AzureStorageSupportedCharacterScrubber.ps1 provides a turn
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://azure.github.io/Storage/docs/application-and-user-data/code-samples/concurrent-uploads-with-versioning/</guid>
<description>Managing concurrent uploads in Azure blob storage with blob versioning # When you are building applications that need to have multiple clients uploading to the same object in Azure blob storage, there are several options to help you manage concurrency depending on your strategy. Concurrency strategies include:
<description>Managing concurrent uploads in Azure blob storage with blob versioning # When you are building applications that need to have multiple clients uploading to the same object in Azure blob storage, there are several options to help you manage concurrency depending on your strategy. Concurrency strategies include:
Optimistic concurrency: An application performing an update will, as part of its update, determine whether the data has changed since the application last read that data.</description>
</item>
@ -99,7 +99,7 @@ The PowerShell script AzureStorageSupportedCharacterScrubber.ps1 provides a turn
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://azure.github.io/Storage/docs/storage-partners/</guid>
<description>Storage Partners # Archive # Acronis Archive360 Commvault HubStor Igneous Veeam Veritas Backup # Acronis Actifio Carbonite Cloudberry Cohesity Commvault Igneous Rubrik Veeam Veritas Disaster Recovery # Portworx StorageOS Zerto MultiProtocol # Caringo Cloudian Minio Scality MultiSite collaboration # Nasuni Panzura Talon Tiering # Komprise Moonwalk Peer Software Pure Storage Quantum Tools # Cloudberry Komprise Verticals # Automotive # Cognata Elektrobit Linker Networks Financial Services # Archive360 Data Parser HubStor XenData Healthcare # DNA Nexus Nucleus Health Oil &amp;amp; Gas # Cegal Interica PixStor Tiger Tech Xen Data </description>
<description>Storage Partners Acronis Actifio Carbonite Cloudberry Cohesity Commvault Igneous Rubrik Veeam Veritas Disaster Recovery Cegal Interica PixStor Tiger Tech Xen Data </description>
</item>
<item>
@ -108,7 +108,7 @@ The PowerShell script AzureStorageSupportedCharacterScrubber.ps1 provides a turn
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://azure.github.io/Storage/docs/analytics/hitchhikers-guide-to-the-datalake/</guid>
<description>The Hitchhiker&#39;s Guide to the Data Lake # A comprehensive guide on key considerations involved in building your enterprise data lake
<description>The Hitchhiker&#39;s Guide to the Data Lake # A comprehensive guide on key considerations involved in building your enterprise data lake
The Hitchhiker&#39;s Guide to the Data Lake When is ADLS Gen2 the right choice for your data lake? Key considerations in designing your data lake Terminology Organizing and managing data in your data lake Do I want a centralized or a federated data lake implementation? How do I organize my data?</description>
</item>
@ -118,7 +118,7 @@ The PowerShell script AzureStorageSupportedCharacterScrubber.ps1 provides a turn
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://azure.github.io/Storage/docs/tools-and-utilities/</guid>
<description>Tools and Utilities # AzCopy is a command-line utility that you can use to copy blobs or files to or from a storage account. AzReplicate is a sample application designed to help Azure Storage customers perform very large, multi-petabyte data migrations to Azure Blob Storage. AzDataMaker is a sample .NET Core app that runs in a Linux Azure Container Instance that generates files and uploads them to Azure Blob Storage.</description>
<description>Tools and Utilities # AzCopy is a command-line utility that you can use to copy blobs or files to or from a storage account. AzReplicate is a sample application designed to help Azure Storage customers perform very large, multi-petabyte data migrations to Azure Blob Storage. AzDataMaker is a sample .NET Core app that runs in a Linux Azure Container Instance that generates files and uploads them to Azure Blob Storage.</description>
</item>
</channel>

Просмотреть файл

@ -15,7 +15,7 @@
<link rel="manifest" href="/Storage/manifest.json">
<link rel="icon" href="/Storage/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/Storage/book.min.6c7c6446dfdee7c8c933e9bbc6e80ee3ed6c913b2a59519f2092c3c6a9d63e55.css" integrity="sha256-bHxkRt/e58jJM&#43;m7xugO4&#43;1skTsqWVGfIJLDxqnWPlU=">
<script defer src="/Storage/en.search.min.e3c811d780a09e785595e36be4217a7ab952f46ef2f08e5fc30d042f67c46bf2.js" integrity="sha256-48gR14CgnnhVleNr5CF6erlS9G7y8I5fww0EL2fEa/I="></script>
<script defer src="/Storage/en.search.min.61b55b4541bc4c90e042fdb1f7deab6f1c0c90d694b30ab36fc5e6e471c61a3f.js" integrity="sha256-YbVbRUG8TJDgQv2x996rbxwMkNaUswqzb8Xm5HHGGj8="></script>
<link rel="alternate" type="application/rss+xml" href="https://azure.github.io/Storage/tags/index.xml" title="Azure Storage" />
<!--
Made with Book Theme