{"id":669,"date":"2020-05-06T00:00:00","date_gmt":"2020-05-06T00:00:00","guid":{"rendered":""},"modified":"2023-05-11T15:26:34","modified_gmt":"2023-05-11T22:26:34","slug":"minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world","status":"publish","type":"post","link":"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/","title":{"rendered":"Minecraft Earth and Azure Cosmos DB part 1: Extending Minecraft into our real world"},"content":{"rendered":"<p><i>This post is part 1 of a two-part series about how organizations use Azure Cosmos DB to meet real world needs and the difference it\u2019s making to them. In part 1, we explore the challenges that led service developers for Minecraft Earth to choose Azure Cosmos DB and how they\u2019re using it to capture almost every action taken by every player around the globe\u2014with ultra-low latency. In <a href=\"https:\/\/azure.microsoft.com\/blog\/minecraft-earth-and-azure-cosmos-db-part-2-delivering-turnkey-geographic-distribution\" target=\"_blank\" rel=\"noopener\">part 2<\/a>, we examine the solution\u2019s workload and how Minecraft Earth service developers have benefited from building it on Azure Cosmos DB.<\/i><\/p>\n<h2>Extending the world of Minecraft into our real world<\/h2>\n<p>You\u2019ve probably heard of the game Minecraft, even if you haven\u2019t played it yourself. It\u2019s the best-selling video game of all time, having sold more than 176 million copies since 2011. Today, Minecraft has more than 112 million monthly players, who can discover and collect raw materials, craft tools, and build structures or earthworks in the game\u2019s <a href=\"https:\/\/www.engadget.com\/2015\/03\/04\/how-minecraft-worlds-are-made\/\" target=\"_blank\" rel=\"noopener\">immersive, procedurally generated 3D world.<\/a> Depending on game mode, players can also fight computer-controlled foes and cooperate with\u2014or compete against\u2014other players.<\/p>\n<p>In May 2019, Microsoft announced the upcoming release of Minecraft Earth, which began its worldwide rollout in December 2019. Unlike preceding games in the Minecraft franchise, Minecraft Earth takes things to an entirely new level by enabling players to experience the world of Minecraft within our real world through the power of augmented reality (AR).<\/p>\n<p>For Minecraft Earth players, the experience is immediately familiar\u2014albeit deeply integrated with the world around them. For developers on the Minecraft team at Microsoft, however, the delivery of Minecraft Earth\u2014especially the authoritative backend services required to support the game\u2014would require building something entirely new.<\/p>\n<p>Nathan Sosnovske, a Senior Software Engineer on the Minecraft Earth services development team explains:<\/p>\n<p><em>\u201cWith vanilla Minecraft, while you could host your own server, there was no centralized service authority. Minecraft Earth is based on a centralized, authoritative service\u2014the first \u2018heavy\u2019 service we\u2019ve ever had to build for the Minecraft franchise.\u201d<\/em><\/p>\n<p>In this case study, we\u2019ll look at some of the challenges that Minecraft Earth service developers faced in delivering what was required of them\u2014and how they used Azure Cosmos DB to meet those needs.<\/p>\n<h2>The technical challenge: Avoiding in-game lag<\/h2>\n<p>Within the Minecraft Earth client, which runs on iOS-based and Android-based AR-capable devices, almost every action a player takes results in a write to the core Minecraft Earth service. Each write is a REST POST that must be immediately accepted and acknowledged to avoid any noticeable in-game lag.<\/p>\n<p><em>\u201cFrom a services perspective, Minecraft Earth requires low-latency writes and medium-latency reads,\u201d explains Sosnovske. \u201cWrites need to be fast because the client requires confirmation on each one, such as might be needed for the client to render\u2014for example, when a player taps on a resource to see what\u2019s in it, we don\u2019t want the visuals to hang while the corresponding REST request is processed. Medium-latency reads are acceptable because we can use client-side simulation until the backing model behind the service can be updated for reading.\u201d<\/em><\/p>\n<p>To complicate the challenge, Minecraft Earth service developers needed to ensure low-latency writes regardless of a player\u2019s location. This required running copies of the service in multiple locations within each geography where Minecraft Earth would be offered, along with built-in intelligence to route the Minecraft Earth client to the nearest location where the service is deployed.<\/p>\n<p><em>\u201cTypical network latency between the east and west coasts of the US is 70 to 80 milliseconds,\u201d says Sosnovske. \u201cIf a player in New York had to rely on a service running in San Francisco, or vice versa, the in-game lag would be unacceptable. At the same time, the game is called Minecraft Earth\u2014meaning we need to enable players in San Francisco and New York to share the same in-game experience. To deliver all this, we need to replicate the service\u2014and its data\u2014in multiple, geographically distributed datacenters within each geography.\u201d<\/em><\/p>\n<h2>The solution: An event sourcing pattern based on Azure Cosmos DB<\/h2>\n<p>To satisfy their technical requirements, Minecraft Earth service developers implemented an <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/architecture\/patterns\/event-sourcing\" target=\"_blank\" rel=\"noopener\">event sourcing pattern<\/a> based on <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/cosmos-db\/introduction\" target=\"_blank\" rel=\"noopener\">Azure Cosmos DB<\/a>.<\/p>\n<p><em>\u201cWe originally considered using Azure Table storage to store our append-only event log, but its lack of any SLAs for read and write latencies made that unfeasible,\u201d says Sosnovske. \u201cUltimately, we chose Azure Cosmos DB because it provides 10 millisecond SLAs for both reads and writes, along with the global distribution and multi-master capabilities needed to replicate the service in multiple locations within each geography.\u201d <\/em><\/p>\n<p>With an event sourcing pattern, instead of just storing the current state of the data, the Minecraft Earth service uses an append-only data store that\u2019s based on Azure Cosmos DB to record the full series of actions taken on the data\u2014in this case, mapping to each in-game action taken by the player. After immediate acknowledgement of a successful write is returned to the client, queues that subscribe to the append-only event store handle postprocessing and asynchronously apply the collected events to a domain state maintained in <a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/storage\/blobs\" target=\"_blank\" rel=\"noopener\">Azure Blob storage<\/a>. To optimize things further, Minecraft Earth developers combined the event sourcing pattern with domain-driven design, in which each app domain\u2014such as inventory items, character profiles, or achievements\u2014has its own event stream.<\/p>\n<p><em>\u201cWe modeled our data as streams of events that are stored in an append-only log and mutate an in-memory model state, which is used to drive various client views,\u201d says Sosnovske. \u201cThat cached state is maintained in Azure Blob storage, which is fast enough for reads and helps to keep our request unit costs for Azure Cosmos DB to a minimum. In many ways, what we\u2019ve done with Azure Cosmos DB is like building a write cache that\u2019s really, really resilient.\u201d<\/em><\/p>\n<p>The following diagram shows how the event sourcing pattern based on Azure Cosmos DB works:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Event sourcing pattern based on Azure Cosmos DB workflow diagram.\" height=\"534\" src=\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2020\/05\/dfd8c989-e0f7-4554-8e02-d4fbc1046c4f.webp\" title=\"Event sourcing pattern based on Azure Cosmos DB workflow diagram.\" width=\"634\"><\/p>\n<h2>Putting Azure Cosmos DB in place<\/h2>\n<p>In putting Azure Cosmos DB to use, developers had to make a few design decisions:<\/p>\n<p><b>Azure Cosmos DB API.<\/b> Developers chose to use the Azure Cosmos DB Core (SQL) API because it offered the best performance and the greatest ease of use, along with other needed capabilities.<\/p>\n<p><em>\u201cWe were building a system from scratch, so there was no need for a compatibility layer to help us migrate existing code,\u201d Sosnovske explains. \u201cIn addition, some Azure Cosmos DB features that we depend on\u2014such as <a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/api\/microsoft.azure.cosmos.transactionalbatch?view=azure-dotnet\" target=\"_blank\" rel=\"noopener\">TransactionalBatch<\/a>\u2014are only supported with the Core (SQL) API. As an added advantage, the Core (SQL) API was really intuitive, as our team was already familiar with SQL in general.\u201d<\/em><\/p>\n<p>Read <a href=\"https:\/\/devblogs.microsoft.com\/cosmosdb\/introducing-transactionalbatch-in-the-net-sdk\/\" target=\"_blank\" rel=\"noopener\">Introducing TransactionalBatch in the .NET SDK<\/a> to learn more.<\/p>\n<p><b>Partition key.<\/b> Developers ultimately decided to logically partition the data within Azure Cosmos DB based on users.<\/p>\n<p><em>\u201cWe originally partitioned data on users and domains\u2014again, examples being inventory items or achievements\u2014but found that this breakdown was too granular and prevented us from using database transactions within Azure Cosmos DB to their full potential,\u201d says Sosnovske.\u201d<\/em><\/p>\n<p><b>Consistency level.<\/b> Of the <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/cosmos-db\/consistency-levels\" target=\"_blank\" rel=\"noopener\">five consistency levels supported by Azure Cosmos DB<\/a>, developers chose session consistency, which they combined with heavy <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/cosmos-db\/database-transactions-optimistic-concurrency\" target=\"_blank\" rel=\"noopener\">etag checking<\/a> to ensure that data is properly written.<\/p>\n<p><em>\u201cThis works for us because of how we store data, which is modeled as an append-only log with a head document that serves as a pointer to the tail of the log,\u201d explains Sosnovske. \u201cWriting to the database involves reading the head document and its etag, deriving the N+1 log ID, and then constructing a transactional batch operation that overwrites the head pointer using the previously read etag and creates a new document for the log entry. In the unlikely case that the log has already been written, the etag check and the attempt to create a document that already existed will result in a failed transaction. This happened regardless of whether another request \u2018beats\u2019 us to writing or if our request reads slightly out-of-date data.\u201d<\/em><\/p>\n<p>In <a href=\"https:\/\/azure.microsoft.com\/blog\/minecraft-earth-and-azure-cosmos-db-part-2-delivering-turnkey-geographic-distribution\" target=\"_blank\" rel=\"noopener\">part 2<\/a><strong> <\/strong>of this series, we examine the solution\u2019s current workload and how Minecraft Earth service developers have benefited from building it on Azure Cosmos DB.<\/p>\n<h2>Get started with Azure Cosmos DB<\/h2>\n<ul>\n<li>Visit <a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/cosmos-db\/\" target=\"_blank\" rel=\"noopener\">Azure Cosmos DB<\/a>.<\/li>\n<li>Learn more about <a href=\"https:\/\/azure.microsoft.com\/en-us\/solutions\/gaming\/\" target=\"_blank\" rel=\"noopener\">Azure for Gaming<\/a>.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>This post is part 1 of a two-part series about how organizations use Azure Cosmos DB to meet real world needs and the difference it\u2019s making to them.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"ms_queue_id":[],"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","_alt_title":"","footnotes":"","msx_community_cta_settings":[]},"categories":[1474,1473],"tags":[48],"audience":[3054,3057,3055,3053,3056],"content-type":[1527],"product":[1538],"tech-community":[],"topic":[],"coauthors":[177],"class_list":["post-669","post","type-post","status-publish","format-standard","hentry","category-analytics","category-databases","tag-big-data","audience-business-decision-makers","audience-data-professionals","audience-developers","audience-it-decision-makers","audience-it-implementors","content-type-customer-stories","product-azure-cosmos-db"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Minecraft Earth and Azure Cosmos DB part 1: Extending Minecraft into our real world | Microsoft Azure Blog<\/title>\n<meta name=\"description\" content=\"This post is part 1 of a two-part series about how organizations use Azure Cosmos DB to meet real world needs and the difference it\u2019s making to them.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Minecraft Earth and Azure Cosmos DB part 1: Extending Minecraft into our real world | Microsoft Azure Blog\" \/>\n<meta property=\"og:description\" content=\"This post is part 1 of a two-part series about how organizations use Azure Cosmos DB to meet real world needs and the difference it\u2019s making to them.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Azure Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/microsoftazure\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-06T00:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-05-11T22:26:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2020\/05\/dfd8c989-e0f7-4554-8e02-d4fbc1046c4f.webp\" \/>\n<meta name=\"author\" content=\"Parul Matah\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@azure\" \/>\n<meta name=\"twitter:site\" content=\"@azure\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Parul Matah\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/\"},\"author\":[{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/parul-matah\/\",\"@type\":\"Person\",\"@name\":\"Parul Matah\"}],\"headline\":\"Minecraft Earth and Azure Cosmos DB part 1: Extending Minecraft into our real world\",\"datePublished\":\"2020-05-06T00:00:00+00:00\",\"dateModified\":\"2023-05-11T22:26:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/\"},\"wordCount\":1375,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2020\/05\/dfd8c989-e0f7-4554-8e02-d4fbc1046c4f.webp\",\"keywords\":[\"Big Data\"],\"articleSection\":[\"Analytics\",\"Databases\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/\",\"name\":\"Minecraft Earth and Azure Cosmos DB part 1: Extending Minecraft into our real world | Microsoft Azure Blog\",\"isPartOf\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2020\/05\/dfd8c989-e0f7-4554-8e02-d4fbc1046c4f.webp\",\"datePublished\":\"2020-05-06T00:00:00+00:00\",\"dateModified\":\"2023-05-11T22:26:34+00:00\",\"description\":\"This post is part 1 of a two-part series about how organizations use Azure Cosmos DB to meet real world needs and the difference it\u2019s making to them.\",\"breadcrumb\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/#primaryimage\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2020\/05\/dfd8c989-e0f7-4554-8e02-d4fbc1046c4f.webp\",\"contentUrl\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2020\/05\/dfd8c989-e0f7-4554-8e02-d4fbc1046c4f.webp\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog home\",\"item\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Analytics\",\"item\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/category\/analytics\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Minecraft Earth and Azure Cosmos DB part 1: Extending Minecraft into our real world\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#website\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/\",\"name\":\"Microsoft Azure Blog\",\"description\":\"Get the latest Azure news, updates, and announcements from the Azure blog. From product updates to hot topics, hear from the Azure experts.\",\"publisher\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization\",\"name\":\"Microsoft Azure Blog\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2024\/06\/microsoft_logo.webp\",\"contentUrl\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2024\/06\/microsoft_logo.webp\",\"width\":512,\"height\":512,\"caption\":\"Microsoft Azure Blog\"},\"image\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/microsoftazure\",\"https:\/\/x.com\/azure\",\"https:\/\/www.instagram.com\/microsoftdeveloper\/\",\"https:\/\/www.linkedin.com\/company\/16188386\",\"https:\/\/www.youtube.com\/user\/windowsazure\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/person\/c702e5edd662b328b49b7e1180cab117\",\"name\":\"shakir\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g7664e653ea371ce16eaf75e9fa8952c4\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g\",\"caption\":\"shakir\"},\"sameAs\":[\"https:\/\/azure.microsoft.com\"],\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/shakir\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Minecraft Earth and Azure Cosmos DB part 1: Extending Minecraft into our real world | Microsoft Azure Blog","description":"This post is part 1 of a two-part series about how organizations use Azure Cosmos DB to meet real world needs and the difference it\u2019s making to them.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/","og_locale":"en_US","og_type":"article","og_title":"Minecraft Earth and Azure Cosmos DB part 1: Extending Minecraft into our real world | Microsoft Azure Blog","og_description":"This post is part 1 of a two-part series about how organizations use Azure Cosmos DB to meet real world needs and the difference it\u2019s making to them.","og_url":"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/","og_site_name":"Microsoft Azure Blog","article_publisher":"https:\/\/www.facebook.com\/microsoftazure","article_published_time":"2020-05-06T00:00:00+00:00","article_modified_time":"2023-05-11T22:26:34+00:00","og_image":[{"url":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2020\/05\/dfd8c989-e0f7-4554-8e02-d4fbc1046c4f.webp","type":"","width":"","height":""}],"author":"Parul Matah","twitter_card":"summary_large_image","twitter_creator":"@azure","twitter_site":"@azure","twitter_misc":{"Written by":"Parul Matah","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/#article","isPartOf":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/"},"author":[{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/parul-matah\/","@type":"Person","@name":"Parul Matah"}],"headline":"Minecraft Earth and Azure Cosmos DB part 1: Extending Minecraft into our real world","datePublished":"2020-05-06T00:00:00+00:00","dateModified":"2023-05-11T22:26:34+00:00","mainEntityOfPage":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/"},"wordCount":1375,"commentCount":0,"publisher":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization"},"image":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/#primaryimage"},"thumbnailUrl":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2020\/05\/dfd8c989-e0f7-4554-8e02-d4fbc1046c4f.webp","keywords":["Big Data"],"articleSection":["Analytics","Databases"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/","name":"Minecraft Earth and Azure Cosmos DB part 1: Extending Minecraft into our real world | Microsoft Azure Blog","isPartOf":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/#primaryimage"},"image":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/#primaryimage"},"thumbnailUrl":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2020\/05\/dfd8c989-e0f7-4554-8e02-d4fbc1046c4f.webp","datePublished":"2020-05-06T00:00:00+00:00","dateModified":"2023-05-11T22:26:34+00:00","description":"This post is part 1 of a two-part series about how organizations use Azure Cosmos DB to meet real world needs and the difference it\u2019s making to them.","breadcrumb":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/#primaryimage","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2020\/05\/dfd8c989-e0f7-4554-8e02-d4fbc1046c4f.webp","contentUrl":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2020\/05\/dfd8c989-e0f7-4554-8e02-d4fbc1046c4f.webp"},{"@type":"BreadcrumbList","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/minecraft-earth-and-azure-cosmos-db-part-1-extending-minecraft-into-our-real-world\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog home","item":"https:\/\/azure.microsoft.com\/en-us\/blog\/"},{"@type":"ListItem","position":2,"name":"Analytics","item":"https:\/\/azure.microsoft.com\/en-us\/blog\/category\/analytics\/"},{"@type":"ListItem","position":3,"name":"Minecraft Earth and Azure Cosmos DB part 1: Extending Minecraft into our real world"}]},{"@type":"WebSite","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#website","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/","name":"Microsoft Azure Blog","description":"Get the latest Azure news, updates, and announcements from the Azure blog. From product updates to hot topics, hear from the Azure experts.","publisher":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/azure.microsoft.com\/en-us\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization","name":"Microsoft Azure Blog","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2024\/06\/microsoft_logo.webp","contentUrl":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2024\/06\/microsoft_logo.webp","width":512,"height":512,"caption":"Microsoft Azure Blog"},"image":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/microsoftazure","https:\/\/x.com\/azure","https:\/\/www.instagram.com\/microsoftdeveloper\/","https:\/\/www.linkedin.com\/company\/16188386","https:\/\/www.youtube.com\/user\/windowsazure"]},{"@type":"Person","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/person\/c702e5edd662b328b49b7e1180cab117","name":"shakir","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g7664e653ea371ce16eaf75e9fa8952c4","url":"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g","caption":"shakir"},"sameAs":["https:\/\/azure.microsoft.com"],"url":"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/shakir\/"}]}},"msxcm_display_generated_audio":false,"msxcm_animated_featured_image":null,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Microsoft Azure Blog","distributor_original_site_url":"https:\/\/azure.microsoft.com\/en-us\/blog","push-errors":false,"_links":{"self":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts\/669","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/comments?post=669"}],"version-history":[{"count":1,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts\/669\/revisions"}],"predecessor-version":[{"id":44405,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts\/669\/revisions\/44405"}],"wp:attachment":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/media?parent=669"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/categories?post=669"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/tags?post=669"},{"taxonomy":"audience","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/audience?post=669"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/content-type?post=669"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/product?post=669"},{"taxonomy":"tech-community","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/tech-community?post=669"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/topic?post=669"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/coauthors?post=669"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}