Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between ReferenceTableInfo to ShardedTableInfo in Azure Elastic DB?

I downloaded the sample code -> "ElasticScaleStarterKit" (in visual studio -> file -> new -> project -> online -> Elastic DB Tools for Azure SQL - getting Started).

the schema defined as follows:

schemaInfo.Add(new ReferenceTableInfo("Regions"));
schemaInfo.Add(new ReferenceTableInfo("Products"));
schemaInfo.Add(new ShardedTableInfo("Customers", "CustomerId"));
schemaInfo.Add(new ShardedTableInfo("Orders", "CustomerId"));

What is the difference between ReferenceTableInfo to ShardedTableInfo?

I understand that the simple difference is between "dry" information that is true for all databases (like status table etc...), and personal information - for a specific customer.

But, what would happen if all the tables was set to be References?? What's the downside to this kind of setting:

schemaInfo.Add(new ReferenceTableInfo("Regions"));
schemaInfo.Add(new ReferenceTableInfo("Products"));
schemaInfo.Add(new ReferenceTableInfo("Customers"));
schemaInfo.Add(new ReferenceTableInfo("Orders"));

hope for any help :)

thank you!

like image 985
ZoharYosef Avatar asked Oct 19 '22 20:10

ZoharYosef


1 Answers

Reference Tables are tables whose data is replicated, which means that if the reference table has 5 rows, then those 5 rows will exist on all instances of reference table.

However, Sharded Table is the one in which data is partitioned. For example if you have 5 rows of data in Sharded table then 2 will live on one Shard (or database) and 3 on other. So no two databases will have same set of rows.

This information is also used by the split/merge tool. For replicated tables, all rows are copied from source to target while rows are moved from source to target for sharded tables.

Hope this helps!

like image 66
Silvia Doomra Avatar answered Jan 04 '23 06:01

Silvia Doomra