Предположим, я хочу создать модель для создания некоторых виджетов в RethinkDB. Процесс сборки начинается, get имеет уникальный идентификатор, работает некоторое время, а затем, когда он записывает данные в базу данных под идентификатором, который был указан. Существует много типов виджетов, и идентификатор должен быть уникальным для всех.Уникальный целочисленный счетчик в RethinkDb
Если бы я делал это в Postgres, я бы, наверное, один основной widget
стола, с одной таблицей для каждого типа виджета (widget_x
, widget_y
и т.д.) наследуемого от этого основной таблицы. Идентификатор будет иметь тип SERIAL в основной таблице widget
. Когда начнется процесс строительства, я бы вставлял некоторые данные, получал свой уникальный идентификатор, начинал работать, и когда здание завершено, обновите таблицу. Я, вероятно, не буду использовать транзакции во всем процессе, потому что здание может занять много времени.
Как сделать это в RethinkDB? Мне действительно нужен идентификатор, который будет увеличиваться, поэтому я не могу использовать ключи UUID по умолчанию. Я хочу, чтобы каждый вид виджетов находился в собственной таблице.
Если я сделать этот запрос до начала каждый виджет здания:
r.table("counters")
.get("some-uuid-key")
.update({ widget_counter: r.row("widget_counter").add(1) }, {return_vals: true})
будет эта работа, как я надеюсь, что это будет, давая мне базу данных широкий уникальный идентификатор, без какой-либо возможности в ID конфликта?
Благодаря ...