Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 为什么Google Appengine中没有唯一的约束?_Google App Engine_Google Cloud Datastore_Unique Constraint - Fatal编程技术网

Google app engine 为什么Google Appengine中没有唯一的约束?

Google app engine 为什么Google Appengine中没有唯一的约束?,google-app-engine,google-cloud-datastore,unique-constraint,Google App Engine,Google Cloud Datastore,Unique Constraint,我看过很多关于如何在appengine中实现唯一约束的文章和问题,但实际上我没有找到任何关于为什么不存在此功能的解释 如果appengine开发人员认为最好不要实现这样的功能,我相信他们有很好的理由,但我有兴趣了解他们为什么决定这样做 这一决定是否以性能问题为指导?为什么? 对此的任何详细解释都将不胜感激。您可以看到Google对在其上添加唯一约束的回应。正如链接到此处的帖子所说,数据存储的分布式特性使得强制实施唯一约束变得困难。如果两个应用程序实例同时尝试创建一个实体,每个实体的属性都应该是唯

我看过很多关于如何在appengine中实现唯一约束的文章和问题,但实际上我没有找到任何关于为什么不存在此功能的解释

如果appengine开发人员认为最好不要实现这样的功能,我相信他们有很好的理由,但我有兴趣了解他们为什么决定这样做

这一决定是否以性能问题为指导?为什么?


对此的任何详细解释都将不胜感激。

您可以看到Google对在其上添加唯一约束的回应。

正如链接到此处的帖子所说,数据存储的分布式特性使得强制实施唯一约束变得困难。如果两个应用程序实例同时尝试创建一个实体,每个实体的属性都应该是唯一的,那么执行此操作的唯一方法将需要在数据存储中的所有机器上进行某种协调

想象一下,一个房间里有26个人,每人拿着一张纸,比如说一桌宠物和它们的主人。每个人用字母表中的不同字母控制每只宠物,例如,人1做所有以字母a开头的事情,人2做所有以字母B开头的事情,依此类推

如果您想确保名为mittens的宠物是整个数据存储中唯一的手套,这很容易,因为房间里只有一个人参与,他们可以检查他们的文件,确保手套不在那里

如果您想要求所有者也必须是唯一的,您可以想象,每当有人想要在其表中写入一个条目时,他们需要与/每个其他人/进行检查,以确保没有其他人使用该所有者名称。这就是AppEngine的数据存储不允许对实体键以外的任何对象进行唯一性约束的根本原因。当数据存储包含数千台服务器时,根本不可能这样做


希望你能明白为什么会有这样的限制,希望我深夜打字不会太难读:D

谢谢你的回答(举个好例子),我现在明白多了!