大数据计算MaxCompute全量表只有一张 但是临时表会有多张,数据源有多个,所以当所有数据源数据同时达到临时表,再往全量表导入数据的时候就会产生并发~除非进行队列插入可能会避免这个问题?那数据进入到mc表之后他所在的行号是不是就一直不变了呢?如果对其进行了字段更新的话 行号是不是就i变了呢?我们用的是事务表呢?
MaxCompute(原名ODPS,开放大数据处理服务)是一个大规模数据处理平台,它主要用于处理和分析大量数据,而不是存储和管理数据。因此,MaxCompute并没有像数据库那样的事务和锁机制。
在MaxCompute中,数据是以分片的形式存储的,每个分片都有自己的行号。当数据被写入到一个分片时,它会自动分配一个行号。然后,这个行号就会被持久化,即使数据被更新或删除,这个行号也不会改变。这是因为MaxCompute的设计目标是高吞吐量和低延迟,而不是强一致性。
因此,如果你在一个事务中更新了某个字段,那么这个字段的值会被更新,但是行号不会改变。这是因为行号的分配是在数据写入分片时完成的,而不是在事务提交时完成的。
虽然MaxCompute没有数据库的事务和锁机制,但是它的设计使得它在处理大量数据时能够保持高吞吐量和低延迟。
在MaxCompute中,由于其分布式架构的特点,对于多张临时表的数据合并到一张全量表的过程的确可能存在并发问题。为了避免这种情况,您可以在程序设计时采取一些措施来降低并发冲突的可能性,比如:
关于行号的问题,在MaxCompute中并不会有固定的行号概念。这是因为MaxCompute是一个分布式的、基于列存储的大数据处理平台,它并不保证数据按照某种特定顺序存储。因此,在进行数据更新时,无法依赖行号来定位特定行。
如果您需要跟踪每条记录的历史版本,那么可以考虑使用拉链表(Snapshot Table)的设计方法。在这种方案中,每个记录都会有一个唯一的主键,并且每一次更新都会生成一个新的版本记录,旧版本的记录不会被删除而是标记为已过期。这样就可以通过主键快速地找到最新的记录版本以及历史版本。
同时写没问题https://help.aliyun.com/zh/maxcompute/product-overview/acid-semantics?spm=a2c4g.11174283.0.0.6d01cd53Ht7n4k
不动就不会变,普通表不支持update。那就需要设置权限了。不要让随便update,此回答整理自钉群“MaxCompute开发者社区2群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。