Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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
Sql 为什么红移没有';不允许关键约束?_Sql_Amazon Redshift - Fatal编程技术网

Sql 为什么红移没有';不允许关键约束?

Sql 为什么红移没有';不允许关键约束?,sql,amazon-redshift,Sql,Amazon Redshift,是否存在红移不允许关键约束的特殊原因?查看下面的声明: 唯一性、主键和外键约束是信息性的 只有亚马逊红移并没有强制执行。尽管如此,主要 键和外键用作规划提示。他们应该是 声明应用程序中的ETL进程或其他进程 强化他们的诚信 这是因为速度还是什么?这一定是有原因的 我认为主要原因是,从数据加载性能的角度来看,检查唯一性是不现实的。由于Amazon Redshift的体系结构设计为并行处理数据以进行扩展,因此加载的数据被分发到多个实例。因此,为了支持这些约束,它需要检查每一行的实例之间的唯一性,由于

是否存在红移不允许关键约束的特殊原因?查看下面的声明:

唯一性、主键和外键约束是信息性的 只有亚马逊红移并没有强制执行。尽管如此,主要 键和外键用作规划提示。他们应该是 声明应用程序中的ETL进程或其他进程 强化他们的诚信


这是因为速度还是什么?这一定是有原因的

我认为主要原因是,从数据加载性能的角度来看,检查唯一性是不现实的。由于Amazon Redshift的体系结构设计为并行处理数据以进行扩展,因此加载的数据被分发到多个实例。因此,为了支持这些约束,它需要检查每一行的实例之间的唯一性,由于IO的原因,这听起来很慢。

尽管底层代码库(Postgres)支持,但RedShift不支持一长串内容。大多数在柱状数据库中实现比在更传统的面向行的数据库中实现更麻烦。这是唯一的原因吗?只是因为它很难实施。也许更确切地说:红移不支持索引。尽管柱状数据库可以支持索引,但有充分的理由说明它们的效率较低,因此不一定值得实现。没有索引,意味着没有唯一的索引。没有唯一索引意味着没有唯一约束。没有唯一性,没有外键,主键也不容易实现。Hm。我相信红移确实支持指数。但它不支持关键约束(如UNIQUE)。文档非常清楚,Redshift不支持索引:。嗯-我不同意,构建一个hashmap并检查它是否存在。如果只有一个节点,使用hashmap应该可以工作。但是,如果有多个节点,比如16个计算节点,情况如何?在这种情况下,Redshift无法与“COPY”命令并行加载数据,还需要将加载数据传输到所有节点以检查唯一性。如果Redshift不支持这些约束,人们如何处理这些约束?有一些方法可以避免重复行。1.数据上传的Upsert方法,2。检查副本上的加载提交历史记录,3。定期检查并删除重复的行。