Google数据存储区的“高度可扩展”属性究竟意味着什么?

时间:2016-08-19 11:17:57

标签: database google-app-engine database-design google-cloud-datastore nosql

简单的疑问,这是否意味着它可以处理一种类型(mysql意义上的行)中没有任何分片以及不影响任何性能的十亿+实体(mysql意义上的行)?

2 个答案:

答案 0 :(得分:2)

是的,您可以处理数十亿个没有分片的实体。

数据存储区查询的性能不依赖于您拥有的实体数量。它取决于您要检索的实体数量。换句话说,无论您只有100个实体还是10亿个实体,您将同时获得100个实体。

答案 1 :(得分:1)

是的,它可以处理数十亿实体而不影响性能。但是,“没有分片”是值得怀疑的。默认情况下,您的所有实体都可供Google“分片”,但他们认为这些实体可以满足您应用的需求。当我在这里说“碎片”时,我的意思是将您的实体在他们认为合适的机器或数据中心之间传播。 Sharding不是你自己需要管理的东西。

但是,您可以通过将多个实体放在同一个实体组中来限制分片(在这个意义上)(即通过给多个实体提供相同的 $('.formValidation input[type=submit]').on('click',function(e){ // Prevent Default Form Submit e.preventDefault(); // Define Global if Invalid Fields Exist var hasInvalidInputs = false; // Run Through all to check Input Fields $('input').filter(function(index){ // Check if Invalid Inputs already got detected. If not - check if this field is red if( !hasInvalidInputs ) hasInvalidInputs = $(this).css('border-color') == 'rgb(161, 0, 0)'; // If field is red -> update global var to true }); // Check if Invalid Fields are set to true if (hasInvalidInputs) { console.log('Still at least one field to go!'); } else { console.log('You can submit!'); } }); )。这是您应该尽可能避免的事情,因此您不会限制Google如何使用分片优化您的数据。但是,如果您需要在单个事务中访问许多实体,则可能需要创建实体组。有关您希望的原因和时间的更多信息可用here

顺便说一句,谷歌也可能会在全球多个地点制作多份数据副本,以提高读取吞吐量,如果这是他们的算法确定的最佳选择。