[英]is it possible to shard Vistess with the secondary sharding Key
我們正在使用 Vitess 數據庫在 mysql 中擴展和實現水平分片。 是否可以在 Vitess 中做二級分片。
例如: Table 1 - Agency ( AgencyID INT, CreatedOn DATETIME )
Table 2 - PayrollDetails ( AgencyID INT FOREIGN KEY TO Agency Table, PayrollID INT, PayrollCreatedOn DATETIME )
現在我們使用 AgencyID 作為分片鍵對兩個表進行分片。 但是 PayrollDetails 表非常龐大,它有超過 1 億條記錄。 所以現在我們計划再次使用 PayrollCreatedOn 字段對 PayrollDetails 表進行分片,兩個表的主分片都應該使用 Agency Key,但 payrollDetails 表應該使用 AgencyID 和 PayrollCreatedOn 進行分片。我們如何在 Vitess 中實現它?
從概念上講,分片鍵(主 vindex)用於決定一行進入哪個分片。 因此,不可能有兩個分片鍵,因為它們會指定行的沖突位置。
如果我理解正確,您想在 where 子句中使用PayrollCreatedOn
查詢表,您可以創建輔助 Vindex。 這將創建一個查找表,指向行所在的位置,Vitess 可以利用它。 這里有一個解釋: https://vitess.io/docs/reference/vindexes/ 。 有一個名為CreateLookupVindex
的新命令能夠回填此查找表。 不過,它還沒有被記錄在案。
Vitess 還允許您通過使用不同的主 vindex 來“實現”表。 在這種情況下,第二個表將是第一個表的實時副本,但分片方式不同。 您可以在 vitess 首頁上看到一個演示(向下滾動到視頻)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.