簡體   English   中英

是否可以使用輔助分片密鑰對 Visess 進行分片

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM