Kia ora, kei te hanga tono ahau mo DBMS
Ka rongo te mana! (…aka koa ki te mahi)
Ko nga mea katoa i runga ake nei ka waiho a Tarantool hei papaaahua ataahua mo te hanga i nga tono paanui-nui. I roto i enei tono, he maha nga wa e hiahiatia ana mo te tukurua raraunga.
Ka rite ki te korero i runga ake nei, kua hangaia e Tarantool te tukurua raraunga. Ko te maataapono o tana mahi ko te mahi raupapa i runga i nga tauira nga whakawhitinga katoa kei roto i te raarangi matua (WAL). I te nuinga o te wa ko taua tukurua (ka kiia ano e matou taumata iti) ka whakamahia hei whakapumau i te pai o te tono me te toha ranei i te kawenga panui i waenga i nga kohinga kohinga.
raihi. 1. Te tāruarua i roto i te kāhui
Ko tetahi tauira o tetahi ahuatanga rereke ko te whakawhiti i nga raraunga i hangaia i roto i tetahi papaarangi ki tetahi atu paparangi mo te tukatuka/aroturuki. I roto i te take whakamutunga, he otinga pai ake pea ki te whakamahi taumata teitei te tukurua - te tukuruatanga raraunga i te taumata arorau pakihi tono. Ko era. Kare matou e whakamahi ana i tetahi otinga kua oti te hanga ki roto i te DBMS, engari ka mahia te tukurua i a matou ano i roto i te tono e whanakehia ana e matou. He pai me nga ngoikoretanga o tenei huarahi. Kia whakarārangihia ngā painga.
1. Tiaki waka:
- Kaore e taea e koe te whakawhiti i nga raraunga katoa, engari he waahanga noa iho (hei tauira, ka taea e koe te whakawhiti i etahi ripanga anake, etahi o o ratou pou, rekoata ranei e tutuki ana ki tetahi tohu);
- Kaore i rite ki te tukurua taumata-iti, e mahia tonutia ana i roto i te asynchronous (i whakatinanahia i roto i te putanga o naianei o Tarantool - 1.10) ranei tukutahi (kia whakatinanahia i roto i nga putanga o muri o Tarantool) aratau, ka taea te mahi tukurua taumata-tiketike i roto i nga waahi (arā, te Ko te tono ka tukutahi i nga raraunga - he raraunga waahi whakawhiti, katahi ka okioki i te tukurua, ka mutu ka puta te waahi whakawhiti, me etahi atu);
- Mena he maha nga huringa o te rekoata, ka taea e koe te whakawhiti i tana putanga hou (kaore i te rite ki te tukurua taumata-iti, ko nga huringa katoa i mahia i runga i te rangatira ka purei raupapa i runga i nga tauira).
2. Kaore he raruraru ki te whakatinana i te whakawhitinga HTTP, e taea ai e koe te tukutahi i nga papaarangi mamao.
raihi. 2. Tukurua ki runga HTTP
3. Ko nga hanganga raraunga i waenga i te whakawhiti raraunga kaore e tika kia rite tonu (ano, i te nuinga o te waa, ka taea te whakamahi i nga DBMS rereke, nga reo hotaka, nga papaaho, me etahi atu).
raihi. 3. Te tukurua i roto i nga punaha rerekee
Ko te kino ko te mea, i te toharite, he uaua ake/he utu nui te hotaka i te whirihoranga, a, hei utu mo te whakarite i nga mahi hanga-i roto, me whakamahi koe i a koe ake.
Mena i roto i to ahuatanga he mea nui nga painga o runga ake nei (he tikanga e tika ana ranei), he mea tika ki te whakamahi i te tukurua taumata-tiketike. Me titiro ki etahi huarahi hei whakatinana i te tukuruatanga raraunga taumata-tiketike i roto i te Tarantool DBMS.
Te whakaiti waka
Na, ko tetahi o nga painga o te tukurua taumata teitei ko te penapena waka. Kia tino kitea ai tenei painga, he mea tika ki te whakaiti i te nui o nga raraunga i whakawhitia i ia wahanga whakawhiti. Ko te tikanga, kaua e wareware i te mutunga o te huihuinga, me tukutahi te kaiwhiwhi raraunga me te puna (i te iti rawa mo tera waahanga o nga raraunga e uru ana ki te tukurua).
Me pehea te whakaiti i te nui o nga raraunga ka whakawhitia i te wa o te tukurua taumata-tiketike? Ko te otinga ngawari ko te kowhiri i nga raraunga ma te ra me te wa. Hei mahi i tenei, ka taea e koe te whakamahi i te mara-wa-ra kei te ripanga (mehemea kei te noho). Hei tauira, ko te tuhinga "ota" tera pea he mara "he wa mahi ota" - delivery_time
. Ko te raru o tenei otinga ko nga uara o tenei mara kaore e uru ki te raupapa e rite ana ki te hanga ota. Na e kore e taea e matou te mahara ki te uara mara teitei delivery_time
, ka tukuna i te wa o te waahi whakawhiti o mua, a, i te wa o te waahi whakawhiti e whai ake nei, tohua nga rekoata katoa me te uara mara teitei ake delivery_time
. Ko nga rekoata he iti ake te uara mara kua taapirihia i waenga i nga wa whakawhiti delivery_time
. I tua atu, ka taea e te ota te whakarereke, engari kaore i pa ki te mara delivery_time
. I roto i nga take e rua, kaore nga huringa e whakawhitia mai i te puna ki te waahi. Hei whakaoti i enei raruraru, me whakawhiti raraunga "inaki". Ko era. i ia wahanga whakawhiti ka whakawhitia e matou nga raraunga katoa me te uara mara delivery_time
, nui atu i etahi wa o mua (hei tauira, N haora mai i te waa o naianei). Heoi ano, e kitea ana mo nga punaha nui he nui noa atu tenei huarahi ka taea te whakaiti i nga penapena waka e tohe ana matou ki te kore noa. I tua atu, ko te ripanga e whakawhitihia ana kaore pea he mara e hono ana ki te ra-wa.
Ko tetahi atu otinga, he uaua ake mo te whakatinanatanga, ko te whakaae ki te rironga o nga raraunga. I tenei keehi, i ia wahanga whakawhiti, ka tukuna nga raraunga katoa, kaore ano kia whakamanahia e te kaiwhiwhi. Hei whakatinana i tenei, me taapiri he pou Boolean ki te ripanga puna (hei tauira, is_transferred
). Mena ka whakaae te kaiwhiwhi kua riro mai te rekoata, ka tangohia e te mara e rite ana te uara true
, i muri mai ka kore e uru te urunga ki nga whakawhitinga. Ko tenei whiringa whakatinanatanga kei a raatau nga ngoikoretanga e whai ake nei. Tuatahi, mo ia rekoata kua whakawhitia, me hanga he mihi ka tukuna. Ko te tikanga, ka whakatauritea tenei ki te whakaruarua i te nui o nga raraunga whakawhiti me te arahi ki te rearua te maha o nga haerenga. Tuarua, karekau e taea te tuku i taua rekoata ki te maha o nga kaiwhiwhi (ko te kaiwhiwhi tuatahi ki te whiwhi ka whakaū i te rihīti mo ia ake me era atu katoa).
Ko te tikanga karekau he kino i runga ake nei ko te taapiri i tetahi pou ki te ripanga kua whakawhitia hei whai i nga huringa o ona rarangi. Ka taea te momo ra-wa te ahua o taua pou, a me whakarite/whakahoutia e te tono ki te wa o naianei ia wa ka taapirihia nga rekoata (he mea ngota me te taapiri/whakarereke). Hei tauira, me karanga te pou update_time
. Ma te tiaki i te uara mara morahi o tenei pou mo nga rekoata kua whakawhitia, ka taea e tatou te timata i te waahi whakawhiti e whai ake nei me tenei uara (twhiria nga rekoata me te uara mara update_time
, nui atu i te uara i rongoa i mua). Ko te raru o te huarahi whakamutunga ko nga huringa raraunga ka puta i nga roopu. Ko te hua o nga uara mara i te pou update_time
ehara pea i te mea ahurei. No reira, kaore e taea te whakamahi i tenei pou mo te whakaputanga raraunga wehewehea (waarangi-a-wharangi). Hei whakaatu i te wharangi raraunga ma ia wharangi, me hanga e koe etahi atu tikanga ka iti te pai o te mahi (hei tauira, te tango mai i te paataka raraunga i nga rekoata katoa me te uara. update_time
teitei ake i te mea kua tohua me te whakaputa i te maha o nga rekoata, ka timata mai i tetahi waahanga mai i te timatanga o te tauira).
Ka taea e koe te whakapai ake i te pai o te whakawhiti raraunga ma te whakapai paku i te huarahi o mua. Ki te mahi i tenei, ka whakamahia e matou te momo tauoti (tauoti roa) hei uara mara pou mo te whai i nga huringa. Me whakaingoatia te poupou row_ver
. Ko te uara āpure o tēnei tīwae me whakarite tonu/whakahōu ia wā ka hangaia/whakakētia he rekoata. Engari i tenei keehi, kaore te mara e tautapahia te ra-wa o naianei, engari ko te uara o etahi porotiti, kua piki ake ma te kotahi. Ko te mutunga, ko te pou row_ver
kei roto i nga uara ahurei ka taea te whakamahi kia kaua e whakaatu noa i nga raraunga "delta" (nga raraunga taapiri / whakarereke mai i te mutunga o te huihuinga whakawhiti o mua), engari ki te wawahi noa me te whai hua ki nga wharangi.
Ko te tikanga whakamutunga e whakaarohia ana mo te whakaiti i te nui o nga raraunga i whakawhitia i roto i te anga o te tukurua taumata-tiketike ki ahau nei te mea tino pai me te ao katoa. Kia ata tirohia e tatou.
Te Whakawhiti Raraunga Ma te Kaitatau Putanga Haupae
Te whakatinanatanga o te wahanga tūmau/matua
I roto i te MS SQL Server, he momo pou motuhake hei whakatinana i tenei huarahi - rowversion
. Kei ia pātengi raraunga he porotiti ka piki ma te kotahi i ia wa ka taapirihia he rekoata ki te ripanga he rite te ahua rowversion
. Ko te uara o tenei porotiti ka tautapa aunoa ki te mara o tenei pou i roto i te rekoata kua taapirihia. Ko te Tarantool DBMS kaore he tikanga hanga-i roto. Engari, i Tarantool ehara i te mea uaua ki te whakatinana i te ringa. Kia titiro tatou me pehea te mahi.
Tuatahi, he kupu iti: ko nga tepu i Tarantool e kiia ana ko nga waahi, a ko nga rekoata ka kiia he tuples. I roto i te Tarantool ka taea e koe te hanga raupapa. Ko nga raupapa he mea ke atu i nga kaihanga kua whakaingoatia o nga uara tauoti kua whakaritea. Ko era. koinei tonu ta tatou e hiahia ana mo o tatou kaupapa. Kei raro iho ka hangaia e matou he raupapa penei.
I mua i te mahi i tetahi mahi pātengi raraunga i Tarantool, me whakahaere e koe te whakahau e whai ake nei:
box.cfg{}
Ko te mutunga mai, ka timata a Tarantool ki te tuhi i nga whakaahua paataka raraunga me nga raarangi tauwhitinga ki te raarangi o naianei.
Me hanga he raupapa row_version
:
box.schema.sequence.create('row_version',
{ if_not_exists = true })
Kōwhiringa if_not_exists
ka whakaaetia kia mahia te tuhinga waihanga i nga wa maha: mena kei te noho te ahanoa, kaore a Tarantool e ngana ki te hanga ano. Ka whakamahia tenei whiringa ki nga whakahau DDL katoa e whai ake nei.
Me hanga he waahi hei tauira.
box.schema.space.create('goods', {
format = {
{
name = 'id',
type = 'unsigned'
},
{
name = 'name',
type = 'string'
},
{
name = 'code',
type = 'unsigned'
},
{
name = 'row_ver',
type = 'unsigned'
}
},
if_not_exists = true
})
I konei ka tautuhia te ingoa o te waahi (goods
), ingoa mara me o raatau momo.
Ko nga mara whakanui-aunoa i Tarantool ka hangaia ma te whakamahi i nga raupapa. Me hanga e tatou he matua whakanui-aunoa ma te mara id
:
box.schema.sequence.create('goods_id',
{ if_not_exists = true })
box.space.goods:create_index('primary', {
parts = { 'id' },
sequence = 'goods_id',
unique = true,
type = 'HASH',
if_not_exists = true
})
Kei te tautoko a Tarantool i nga momo tohu tohu. Ko nga tohu e whakamahia nuitia ana ko nga momo TREE me te HASH, e pa ana ki nga hanganga e rite ana ki te ingoa. Ko TREE te momo taupū tino whai kiko. Ka taea e koe te tiki raraunga i roto i te tikanga whakarite. Engari mo te whiriwhiringa riterite, he pai ake te HASH. No reira, he mea pai kia whakamahia te HASH mo te matua matua (koinei ta matou i mahi).
Hei whakamahi i te poupou row_ver
ki te whakawhiti i nga raraunga whakarereke, me herea e koe nga uara raupapa ki nga mara o tenei pou row_ver
. Engari kaore i rite ki te matua matua, ko te uara mara tiwae row_ver
me piki ake ma te kotahi ehara i te mea ka taapirihia nga rekoata hou, engari ka huri ano i nga rekoata o mua. Ka taea e koe te whakamahi i nga kaiwhaiwhai mo tenei. E rua nga momo whakaoho mokowhiti a Tarantool: before_replace
и on_replace
. Ka pupuhihia nga keu i nga wa katoa ka huri nga raraunga o te waahi (mo ia tuple e pa ana ki nga huringa, ka whakarewahia he mahi keu). Rerekē on_replace
, before_replace
Ka taea e -triggers te whakarereke i nga raraunga o te tuple e mahia ai te keu. Na, ko te momo keu whakamutunga e pai ana ki a maatau.
box.space.goods:before_replace(function(old, new)
return box.tuple.new({new[1], new[2], new[3],
box.sequence.row_version:next()})
end)
Ko te keu e whai ake nei ka whakakapi i te uara mara row_ver
kua penapena te tuple ki te uara o muri o te raupapa row_version
.
Kia taea ai te tango raraunga mai i te waahi goods
mā te tīwae row_ver
, me hanga he taupū:
box.space.goods:create_index('row_ver', {
parts = { 'row_ver' },
unique = true,
type = 'TREE',
if_not_exists = true
})
Momo taurangi - rakau (TREE
), na te mea ka hiahia matou ki te tango i nga raraunga i roto i te raupapa pikinga o nga uara o te pou row_ver
.
Me taapiri etahi raraunga ki te waahi:
box.space.goods:insert{nil, 'pen', 123}
box.space.goods:insert{nil, 'pencil', 321}
box.space.goods:insert{nil, 'brush', 100}
box.space.goods:insert{nil, 'watercolour', 456}
box.space.goods:insert{nil, 'album', 101}
box.space.goods:insert{nil, 'notebook', 800}
box.space.goods:insert{nil, 'rubber', 531}
box.space.goods:insert{nil, 'ruler', 135}
No te mea Ko te āpure tuatahi he porotiti piki-aunoa; ka paahi kore noa. Ka whakakapi aunoa a Tarantool i te uara e whai ake nei. Waihoki, ko te uara o nga mara pou row_ver
Ka taea e koe te paahi kore - kaore ranei e tohu i te uara, na te mea ko tenei pou te waahi whakamutunga o te waahi.
Kia tirohia te hua whakauru:
tarantool> box.space.goods:select()
---
- - [1, 'pen', 123, 1]
- [2, 'pencil', 321, 2]
- [3, 'brush', 100, 3]
- [4, 'watercolour', 456, 4]
- [5, 'album', 101, 5]
- [6, 'notebook', 800, 6]
- [7, 'rubber', 531, 7]
- [8, 'ruler', 135, 8]
...
Ka kite koe, ka whakakiia aunoa nga mara tuatahi me te whakamutunga. Inaianei ka ngawari ki te tuhi i tetahi mahi mo te tukunga-a-wharangi o nga huringa mokowhiti goods
:
local page_size = 5
local function get_goods(row_ver)
local index = box.space.goods.index.row_ver
local goods = {}
local counter = 0
for _, tuple in index:pairs(row_ver, {
iterator = 'GT' }) do
local obj = tuple:tomap({ names_only = true })
table.insert(goods, obj)
counter = counter + 1
if counter >= page_size then
break
end
end
return goods
end
Ka tangohia e te taumahi te uara hei tawhā row_ver
, timata mai i te mea e tika ana ki te wetewete i nga huringa, me te whakahoki mai i tetahi waahanga o nga raraunga whakarereke.
Ko te whakatauira raraunga i Tarantool ka mahia ma nga tohu. Mahi get_goods
ka whakamahi i te kaitahuri ma te taurangi row_ver
ki te whiwhi raraunga whakarereke. Ko te momo kaiwhakariterite ko GT (He nui ake i te, nui ake i te). Ko te tikanga ka takahia e te kaitahuri nga uara taurangi timata mai i te matua kua paahitia (uara mara row_ver
).
Ka whakahokia e te kaitoro nga tuple. Kia taea ai e koe te whakawhiti raraunga ma te HTTP, he mea tika ki te huri i nga tuples ki tetahi hanganga watea mo te raupapatanga o muri mai. Ka whakamahia e te tauira te mahi paerewa mo tenei tomap
. Engari o te whakamahi tomap
ka taea e koe te tuhi i to ake mahi. Hei tauira, ka hiahia pea tatou ki te whakaingoa ano i tetahi mara name
, kaua e haere i te mara code
me te taapiri i tetahi mara comment
:
local function unflatten_goods(tuple)
local obj = {}
obj.id = tuple.id
obj.goods_name = tuple.name
obj.comment = 'some comment'
obj.row_ver = tuple.row_ver
return obj
end
Ko te rahi o te wharangi o nga raraunga whakaputa (te maha o nga rekoata i tetahi waahanga) ka whakatauhia e te taurangi page_size
. I roto i te tauira te uara page_size
he 5. I roto i te hotaka tuturu, ko te rahi o te wharangi he mea nui ake. Kei runga i te rahi toharite o te tuple mokowhiti. Ka taea te whakatau i te rahi o te wharangi tino pai ma te ine i te wa whakawhiti raraunga. Ka nui ake te rahi o te wharangi, ka iti ake te maha o nga haerenga i waenga i nga taha tuku me te taha tango. Ma tenei ka taea e koe te whakaiti i te wa katoa mo te tango i nga huringa. Heoi, ki te nui rawa te rahi o te wharangi, ka roa rawa ta matou noho i runga i te tūmau ki te rangatū i te tauira. Ko te mutunga mai, ka roa pea te tukatuka i etahi atu tono ka tae mai ki te tūmau. Tawhā page_size
ka taea te utaina mai i te konae whirihoranga. Mo ia waahi tuku, ka taea e koe te whakarite i tana ake uara. Heoi, mo te nuinga o nga mokowā ka pai te uara taunoa (hei tauira, 100).
Kia mahia te mahi get_goods
:
tarantool> get_goods(0)
---
- - row_ver: 1
code: 123
name: pen
id: 1
- row_ver: 2
code: 321
name: pencil
id: 2
- row_ver: 3
code: 100
name: brush
id: 3
- row_ver: 4
code: 456
name: watercolour
id: 4
- row_ver: 5
code: 101
name: album
id: 5
...
Me tango te uara mara row_ver
mai i te raina whakamutunga ka karanga ano i te mahi:
tarantool> get_goods(5)
---
- - row_ver: 6
code: 800
name: notebook
id: 6
- row_ver: 7
code: 531
name: rubber
id: 7
- row_ver: 8
code: 135
name: ruler
id: 8
...
Ano ano:
tarantool> get_goods(8)
---
- []
...
Ka taea e koe te kite, ina whakamahia penei, ka whakahoki te mahi i nga rekoata mokowā katoa i ia wharangi goods
. Ko te wharangi whakamutunga ka whai i te kowhiringa kore.
Me huri tatou ki te waahi:
box.space.goods:update(4, {{'=', 6, 'copybook'}})
box.space.goods:insert{nil, 'clip', 234}
box.space.goods:insert{nil, 'folder', 432}
Kua hurihia e matou te uara mara name
mo te urunga kotahi me te taapiri e rua nga urunga hou.
Me whakahoki ano te waea mahi whakamutunga:
tarantool> get_goods(8)
---
- - row_ver: 9
code: 800
name: copybook
id: 6
- row_ver: 10
code: 234
name: clip
id: 9
- row_ver: 11
code: 432
name: folder
id: 10
...
I whakahokia mai e te mahi nga rekoata kua whakarereke me te taapiri. Na te mahi get_goods
ka taea e koe te whiwhi raraunga kua rereke mai i tana piiraa whakamutunga, koinei te putake o te tikanga tukurua e whakaarohia ana.
Ka waiho e matou te whakaputanga o nga hua ma te HTTP i te ahua o JSON i waho o te waahanga o tenei tuhinga. Ka taea e koe te panui mo tenei i konei:
Te whakatinanatanga o te wahanga o te kiritaki/pononga
Kia titiro tatou ki te ahua o te whakatinanatanga o te taha whiwhi. Me hanga he mokowā ki te taha tango hei rokiroki i nga raraunga kua tikiakehia:
box.schema.space.create('goods', {
format = {
{
name = 'id',
type = 'unsigned'
},
{
name = 'name',
type = 'string'
},
{
name = 'code',
type = 'unsigned'
}
},
if_not_exists = true
})
box.space.goods:create_index('primary', {
parts = { 'id' },
sequence = 'goods_id',
unique = true,
type = 'HASH',
if_not_exists = true
})
Ko te hanganga o te waahi ka rite ki te hanganga o te waahi i te puna. Engari na te mea kaore matou e tuku i nga raraunga kua riro ki hea atu, ko te pou row_ver
kaore i te waahi o te kaiwhiwhi. I te mara id
ka tuhia nga tohu tohu. Na reira, i runga i te taha o te kaikawe kaore he take ki te whakanui-aunoa.
I tua atu, me whai waahi ki te whakaora i nga uara row_ver
:
box.schema.space.create('row_ver', {
format = {
{
name = 'space_name',
type = 'string'
},
{
name = 'value',
type = 'string'
}
},
if_not_exists = true
})
box.space.row_ver:create_index('primary', {
parts = { 'space_name' },
unique = true,
type = 'HASH',
if_not_exists = true
})
Mo ia mokowā utaina (marae space_name
) ka tiakina e matou te uara whakamutunga kua utaina ki konei row_ver
(marae value
). Ko te tīwae te kī matua space_name
.
Me hanga he mahi hei uta raraunga mokowā goods
mā HTTP. Ki te mahi i tenei, me hiahia he whare pukapuka e whakatinana ana i te kiritaki HTTP. Ko te raina e whai ake nei ka utaina te whare pukapuka me te tuku i te kiritaki HTTP:
local http_client = require('http.client').new()
Kei te hiahia ano matou he whare pukapuka mo te json deserialization:
local json = require('json')
He nui tenei hei hanga i tetahi mahi uta raraunga:
local function load_data(url, row_ver)
local url = ('%s?rowVer=%s'):format(url,
tostring(row_ver))
local body = nil
local data = http_client:request('GET', url, body, {
keepalive_idle = 1,
keepalive_interval = 1
})
return json.decode(data.body)
end
Ka mahia e te mahi he tono HTTP ki te wahitau url ka tukuna row_ver
hei tawhā me te whakahoki i te hua o te tono.
Ko te mahi mo te tiaki i nga raraunga kua riro he penei te ahua:
local function save_goods(goods)
local n = #goods
box.atomic(function()
for i = 1, n do
local obj = goods[i]
box.space.goods:put(
obj.id, obj.name, obj.code)
end
end)
end
Te huringa o te penapena raraunga ki te waahi goods
whakanohoia ki roto i te tauwhitinga (ka whakamahia te mahi mo tenei box.atomic
) hei whakaiti i te maha o nga mahi kōpae.
Ka mutu, ko te mahi tukutahi mokowā rohe goods
me te puna ka taea e koe te whakatinana penei:
local function sync_goods()
local tuple = box.space.row_ver:get('goods')
local row_ver = tuple and tuple.value or 0
—— set your url here:
local url = 'http://127.0.0.1:81/test/goods/list'
while true do
local goods = load_goods(url, row_ver)
local count = #goods
if count == 0 then
return
end
save_goods(goods)
row_ver = goods[count].rowVer
box.space.row_ver:put({'goods', row_ver})
end
end
Tuatahi ka panui tatou i te uara kua tiakina i mua row_ver
mo te waahi goods
. Mena kei te ngaro (te waahi whakawhiti tuatahi), katahi ka tangohia hei row_ver
kore. I muri mai i roto i te huringa ka mahia e matou he wharangi ma te wharangi tangohanga o nga raraunga kua whakarerekehia mai i te puna ki te url kua tohua. I ia whitiwhitinga, ka tiakina e matou nga raraunga kua riro ki te waahi rohe e tika ana, ka whakahou i te uara row_ver
(i te waahi row_ver
me te taurangi row_ver
) - tangohia te uara row_ver
mai i te rarangi whakamutunga o nga raraunga kua utaina.
Hei whakamarumaru i te kopikopiko ohorere (mehemea he hapa i roto i te hotaka), te kapiti while
ka taea te whakakapi e for
:
for _ = 1, max_req do ...
Ko te hua o te mahi i te mahi sync_goods
wāhi goods
kei roto i te kaiwhiwhi nga putanga hou o nga rekoata mokowā katoa goods
i te puna.
Maamaa, kaore e taea te paoho te whakakorenga raraunga penei. Mena he hiahia pera, ka taea e koe te whakamahi tohu whakakore. Tāpirihia ki te mokowā goods
mara boolean is_deleted
a hei utu mo te whakakore tinana i tetahi rekoata, ka whakamahia e matou te whakakore arorau - ka whakatauhia e matou te uara mara is_deleted
ki te tikanga true
. I etahi wa hei utu mo te mara boolean is_deleted
he pai ake te whakamahi i te mara deleted
, e pupuri ana i te ra-wa o te mukunga arorau o te rekoata. I muri i te mahi i te muku arorau, ka whakawhitia te rekoata kua tohua mo te whakakorenga mai i te puna ki te taunga (e ai ki te arorau i korerohia i runga ake nei).
Te Pukenga row_ver
ka taea te whakamahi ki te tuku raraunga mai i etahi atu waahi: kaore he take ki te hanga i tetahi raupapa motuhake mo ia waahi tuku.
I titiro matou ki tetahi huarahi whai hua mo te tukurua raraunga taumata-tiketike i roto i nga tono ma te whakamahi i te Tarantool DBMS.
kitenga
- Ko te Tarantool DBMS he hua ataahua, he hua whakaari mo te hanga i nga tono taumaha.
- He maha nga painga o te tukuruatanga taumata-tiketike ki runga i te tukurua taumata-iti.
- Ko te tikanga tukurua taumata-tiketike i korerohia i roto i te tuhinga ka taea e koe te whakaiti i te nui o nga raraunga whakawhiti ma te whakawhiti noa i nga rekoata kua rereke mai i te waahi whakawhiti whakamutunga.
Source: will.com