2017-02-21 9 views

回答

1

我認爲數據局部性和根表在MySQL或PostreSQL中與在Cloud Spanner中一樣重要,但它們的調用方式不同。

Cloud Spanner是爲非常大的數據庫設計的,這些數據庫只能使用大量傳統的數據庫服務器來實現,這一點很重要。當您使用MySQL或PostreSQL時,通常的解決方法是創建碎片。你必須將你的數據分成許多小塊,並把每個這樣的塊放在不同的服務器上。當然,這種解決方案的實施和維護相當複雜。

Google Cloud Spanner會自動爲您提供幫助,但瞭解如何管理此分片很重要。扳手中的每個碎片都稱爲分裂。規則是,在Spanner中,split必須包含來自根表的行以及所有它的子元素。通過決定根表,您可以定義潛在的分界線,Spanner使用他認爲合適的分界線。你不必擔心分裂的數量,分裂之間的數據遷移,因爲他們的增長或收縮,等等。

如果你讓所有的表爲root,那麼Spanner將在其分片中有充分的靈活性,但有這個價格。很難保持整個碎片的一致性。您可以將其想象爲同時在多個MySQL或PostreSQL服務器上執行事務。這是可能的,但並不容易。扳手也會自動爲你做,但會有性能損失。

可以在Schema and Data Model documentation

主鍵閱讀更多關於這款機型也是扳手架構重要。它根據其主鍵將根錶行分配給拆分。連續的鍵可以到 相同的分割。如果你在很短的時間內在這樣的行上做了很多事務,你可能希望它們被分配到更多的分支上。你可以閱讀更多的Best practices

當然,你沒有看到MySQL或PostgreSQL所有這些概念,如果你能適應單個服務器上的數據;)

相關問題