Rethinkdb中的自动增量

问题描述 投票:3回答:2

RethinkDb是否支持类似于Mysql中的AUTO_INCREMENT的整数列的AUTO_INCREMENT。 https://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

rethinkdb
2个回答
4
投票

不,RethinkDB不支持它。原因是它的分布。在这样的环境中很难有一个自动增量号,因为你必须在多台机器上检查下一个增量值。

现在,让我们想一想自动增量解决的问题是什么?在MySQL上,我们希望将它用于主键,因此它需要是唯一的。这就是它的全部。自动增量不会给你任何其他东西。

在RethinkDB中,UUID保证唯一性,特别是在主键的情况下。

自动增量也是可预测的,可能它不会导致任何有害但理想情况下,它可以让人们了解下一次攻击的价值。例如,采取一个糟糕的设计应用程序,我们可以访问一些URL,如/ this / is / a / sensitive / part / 123,有人可以点击/ this / is / a / sensitive / part / 124。当然,这是没有可靠的身份验证系统的应用程序的错误。但是,UUID可能有助于减少这一点,因为UUID是不可预测的。


1
投票

我们存档如下例

```

r.db('autoInc').table('testauto')
.insert(r.do(function() {
    return {
        autoVal:r.branch(
            r.db('FlowzEngine').table('task_worker').isEmpty().not()
                .and(r.db('FlowzEngine').
                 table('task_worker').hasFields('autoVal')
                .isEmpty().not()),
            r.db('FlowzEngine').table('task_worker')
                .hasFields('autoVal').max('autoVal')
                .do(function(doc){
                    return doc('autoVal').add(1)
                }),
            1)}
}))

```

© www.soinside.com 2019 - 2024. All rights reserved.