Zone Sharding vs Global Writes

Hi ,

We are in midst of Sharding discussions for our Production database and based on some reading and self understanding , below are the options I see.

  1. Range Sharding
  2. Hash Sharding

ShardKey and other concepts around Sharding is quite clear but the place where I am not able to get my head straight is when it comes to Data Localization . If I want to store lets say US data in US and EMEA data in EMEA , the way I see it there are 2 concepts .

  1. Zone Sharding - This is the one where I can group one or more shards into a zone and locally group those shards in each regions , for example if emea-1 , emea-2 and emea-3 shards belog to emea , then i can create a EMEA Zone that basically contains data on those shards and store them in a replica set (Zone) in EMEA . I could do the same for US and depending on the Shard Key data will be stored either in EMEA or in US . Data from my App will primary out of EMEA if it has the EMEA shard and vice versa. Data in this case if written and can also be read close to the geography .

  2. Global Writes - this is a concept where Mongo gives us the ability to create Zones in Each region (EMEA and US) and depending on the location field , Data will be zoned in either US or EMEA and I can read and write to the closet location.

In both of these cases , Data is segregated in each regions and I could architect my apps to read and write data to its nearest region . How does the both differ ? what are the key differences between these concepts ?