Taupū Maheremoka i Haere: rapu i te tere mohoao

Taupū Maheremoka i Haere: rapu i te tere mohoao

whakataki

I hoatu e ahau tenei purongo i te reo Ingarihi i te huihuinga GopherCon Russia 2019 i Moscow me te reo Ruhia i te huihuinga i Nizhny Novgorod. E korero ana matou mo te taurangi maheremoka - he iti ake i te B-rakau, engari he iti ake te whakamere. Te tiritahi tuhi whaikōrero i te hui i roto i te reo Ingarihi me te tuhinga tuhinga i roto i te Russian.

Ka titiro tatou me pehea te mahi a te tohu maheremoka, he pai ake, he kino atu i era atu taurangi, a he aha nga ahuatanga ka tino tere ake i a raatau; Kia kite tatou ko nga DBMS rongonui kua whai tohu tohu maheremoka; Me ngana ki te tuhi i a maatau ake ki te Haere. A "mo te kai reka" ka whakamahia e matou nga whare pukapuka kua oti te hanga ki te hanga i a maatau ake putunga korero tino tere.

E tino tumanako ana ahau ka whai hua, ka whakahihiri hoki aku mahi ki a koe. Haere!

Whakataki


http://bit.ly/bitmapindexes
https://github.com/mkevac/gopherconrussia2019

Kia ora katoa! Kei te ono i te ahiahi, kua tino ngenge matou katoa. He wa pai ki te korero mo te ariā taupū putunga hoha, tika? Kaua e māharahara, ka rua nga rarangi o taku waehere puna ki konei, ki reira. 🙂

I tua atu i nga katakata katoa, kua kiki te purongo i nga korero, karekau he wa roa. Na kia timata tatou.
Taupū Maheremoka i Haere: rapu i te tere mohoao
I tenei ra ka korero ahau mo nga mea e whai ake nei:

  • he aha nga tohu tohu;
  • he aha te tohu maheremoka;
  • kei hea e whakamahia ana me nga waahi KORE i whakamahia me te aha;
  • te whakatinanatanga ngawari i roto i te Haere me te iti o te pakanga ki te kaitoi;
  • he iti ake te ngawari, engari he nui ake te whai hua i roto i te Go assembler;
  • “raruraru” o nga tohu maheremoka;
  • whakatinanatanga o naianei.

Na he aha nga tohu tohu?

Taupū Maheremoka i Haere: rapu i te tere mohoao

Ko te taurangi he hanganga raraunga motuhake ka mau tonu, ka whakahouhia hei taapiri atu ki nga raraunga matua. Ka whakamahia kia tere ake te rapu. Ki te kore he tohu tohu, me haere katoa te rapunga i nga raraunga (he tukanga e kiia ana ko te karapa katoa), a he uaua te hangai o tenei tukanga. Engari i te nuinga o te waa he nui nga raraunga kei roto i nga papaunga raraunga, he puhoi rawa te uaua o te raina. Ko te tikanga, ka whiwhi tatou i te taukohiko, i te taumau ranei.

He kaupapa tino uaua tenei, ki tonu i nga hianga me nga mahi hokohoko, engari i muri i te titiro ki nga tekau tau o te whanaketanga me te rangahau raraunga, e pai ana ahau ki te kii he iti noa nga huarahi e whakamahia nuitia ana ki te hanga tohu tohu raraunga.

Taupū Maheremoka i Haere: rapu i te tere mohoao

Ko te huarahi tuatahi ko te whakaheke i te waahi rapu, ka wehewehe i te waahi rapu ki nga waahanga iti.

I te nuinga o te wa ka mahia tenei ma te whakamahi i nga momo rakau rereke. Ko tetahi tauira ko te pouaka nui o nga rawa kei roto i to wharepaku kei roto nga pouaka iti o nga rawa kua wehea ki nga kaupapa rereke. Mena ka hiahia koe ki nga rauemi, ka rapua e koe i roto i te pouaka e kii ana "Materials" kaua ki tetahi e kii ana "Pihikete," tika?

Taupū Maheremoka i Haere: rapu i te tere mohoao

Ko te huarahi tuarua ko te kowhiri tonu i te huānga e hiahiatia ana, te roopu huānga ranei. Ka mahia tenei i roto i nga mapi hash, i nga tohu whakamuri ranei. Ko te whakamahi i nga mapi hash he tino rite ki te tauira o mua, engari hei utu mo te pouaka pouaka, he paihere pouaka iti o nga mea whakamutunga kei roto i to ruma.

Taupū Maheremoka i Haere: rapu i te tere mohoao

Ko te huarahi tuatoru ko te whakakore i te hiahia mo te rapu. Ka mahia tenei ma te whakamahi i nga whiriwhiringa Bloom, i nga whiriwhiringa cuckoo ranei. Ko nga mea tuatahi ka tuku whakautu tonu, ka kore koe e rapu.

Taupū Maheremoka i Haere: rapu i te tere mohoao

Ko te huarahi whakamutunga ko te whakamahi katoa i nga mana katoa e homai ana e nga taputapu hou. Koinei tonu ta matou mahi i roto i nga tohu tohu maheremoka. Ae, ina whakamahia ana e tatou i etahi wa me haere i roto i te katoa o te taurangi, engari ka tino pai te mahi.

Ka rite ki taku korero, he nui te kaupapa o nga tohu tohu raraunga me te ki tonu i nga taupatupatu. Ko te tikanga, i etahi wa ka taea e tatou te whakamahi i nga huarahi maha i te wa kotahi: ki te hiahia kia tere ake te rapu, ki te hiahia ranei kia kapi katoa nga momo rapu ka taea.

I tenei ra ka korero ahau mo te huarahi tino mohio o enei - bitmap indexes.

Ko wai ahau hei korero mo tenei kaupapa?

Taupū Maheremoka i Haere: rapu i te tere mohoao

Ka mahi ahau hei kaiarahi roopu i Badoo (kei te mohio koe ki etahi atu hua, Bumble). Neke atu i te 400 miriona nga kaiwhakamahi huri noa i te ao me te maha o nga waahanga e tohu ana i te whakataetae pai mo ratou. Ka mahia e matou ma te whakamahi i nga ratonga ritenga, tae atu ki nga tohu tohu maheremoka.

Na he aha te taupū maheremoka?

Taupū Maheremoka i Haere: rapu i te tere mohoao
Ko nga tohu tohu maheremoka, pera i te ingoa e kii ana, ka whakamahi i nga mapi moka, i nga huinga moka ranei hei whakatinana i tetahi tohu rapu. Mai i te tirohanga a te manu, kei roto i tenei taurangi tetahi mapi moka penei ranei e tohu ana i nga hinonga (penei i te tangata) me o ratou taonga, tawhā ranei (tau, tae kanohi, me etahi atu), me tetahi algorithm e whakamahi ana i nga mahi moka (ME, RĀNEI, KORE. ) hei whakautu i te patai rapu.
Taupū Maheremoka i Haere: rapu i te tere mohoao
I korerotia mai ki a matou he pai rawa atu nga tohu tohu maheremoka me te tino mahi mo nga keehi kei reira nga rapunga e whakakotahi ana i nga patai puta noa i te maha o nga pou tino iti (whakaarohia te "tae kanohi" me te "tikanga marena" me tetahi mea penei "tawhiti mai i te taone nui"). Engari ka whakaatu ahau a muri ake nei he pai te mahi mo nga pou katinati teitei.

Kia titiro tatou ki te tauira tino ngawari o te taupū maheremoka.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Whakaarohia kei a maatau he rarangi o nga wharekai o Moscow me nga taonga takirua penei:

  • tata metro;
  • he waka motuhake;
  • he mahau (he terrace);
  • ka taea e koe te rahui he tepu (ka whakaae ki nga rahui);
  • e tika ana mo te kai kaiwhenua (vegan friendly);
  • utu nui (he utu nui).

Taupū Maheremoka i Haere: rapu i te tere mohoao
Me hoatu he nama raupapa ki ia wharekai ka timata mai i te 0 ka toha te mahara mo nga maheremoka e 6 (kotahi mo ia ahuatanga). Ka whakakiia e matou enei maheremoka i runga i te ahua o te whare kai tenei taonga, kaore ranei. Mena he mahau te wharekai 4, ka tohua te moka Nama 4 i te mapi moka "he mahau" ki te 1 (mehemea karekau he mahau, ka 0).
Taupū Maheremoka i Haere: rapu i te tere mohoao
Inaianei kei a maatau te taurangi maheremoka ngawari rawa atu, ka taea e taatau te whakamahi hei whakautu i nga paatai ​​penei:

  • "Whakakitea mai ki ahau nga wharekai kaihuawhenua";
  • "Whakakitea mai ki ahau nga wharekai iti me te mahau hei rahui i tetahi tepu."

Taupū Maheremoka i Haere: rapu i te tere mohoao
Taupū Maheremoka i Haere: rapu i te tere mohoao
Me pehea? Kia titiro tatou. He tino ngawari te tono tuatahi. Heoi ano ta tatou mahi he tango i te mapi bit “huawhenua hoa” ka huri hei rarangi o nga wharekai ka kitea nga paraka.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Taupū Maheremoka i Haere: rapu i te tere mohoao
Ko te tono tuarua he uaua ake. Me whakamahi tatou i te mapi moka KORE i runga i te maheremoka "utu" ki te tiki rarangi o nga wharekai iti, katahi me te mapi moka "ka taea e au te tuhi tepu" me te hua me te mapi moka "he mahau". Kei roto i te maheremoka ka puta he rarangi o nga whakatunga e tutuki ana i o maatau paearu katoa. I tenei tauira, koinei anake te wharekai Yunost.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Taupū Maheremoka i Haere: rapu i te tere mohoao
He maha nga ariā e uru ana, engari kaua e manukanuka, ka kite tatou i te waehere ka tata nei.

Kei hea e whakamahia ai nga tohu maheremoka?

Taupū Maheremoka i Haere: rapu i te tere mohoao
Mena ka tohuhia e koe te maheremoka Google, 90% o nga whakautu ka pa ki a Oracle DB i tetahi huarahi, i tetahi atu ranei. Engari ko etahi atu DBMS kei te tautoko ano i taua mea pai, tika? Kaore rawa.

Kia haere tatou i roto i te rarangi o nga whakapae matua.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Kare ano a MySQL i te tautoko i nga tohu maheremoka, engari he Tono e kii ana kia taapirihia tenei whiringa (https://dev.mysql.com/worklog/task/?id=1524).

Karekau a PostgreSQL e tautoko i nga tohu tohu maheremoka, engari e whakamahi ana i nga maheremoka ngawari me nga mahinga moka hei whakakotahi i nga hua rapu puta noa i etahi atu tohu.

Kei a Tarantool nga tohu tohu me te tautoko i nga rapunga ngawari ki runga.

He papa moka ngawari a Redis (https://redis.io/commands/bitfield) kaore he kaha ki te rapu i a raatau.

Kare ano a MongoDB i te tautoko i nga tohu maheremoka, engari tera ano he Tono e kii ana kia taapirihia tenei whiringa. https://jira.mongodb.org/browse/SERVER-1723

Ka whakamahia e Elasticsearch nga maheremoka o roto (https://www.elastic.co/blog/frame-of-reference-and-roaring-bitmaps).

Taupū Maheremoka i Haere: rapu i te tere mohoao

  • Engari kua puta mai he hoa tata hou ki to matou whare: Pilosa. He pātengi raraunga hou kore-hononga kua tuhia ki Go. Kei roto anake nga tohu tohu maheremoka me nga mea katoa kei runga. Ka korero tatou mo tenei wa iti nei.

Whakatinana i roto i te Haere

Engari he aha i tino uaua ai te whakamahi i nga tohu maheremoka? I mua i te whakautu i tenei patai, e hiahia ana ahau ki te whakaatu ki a koe me pehea te whakatinana i tetahi taurangi maheremoka tino ngawari i roto i te Haere.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Ko nga maheremoka he waahanga raraunga noa iho. I roto i te Haere, me whakamahi poro paita mo tenei.

Kotahi te maheremoka mo tetahi ahuatanga o te wharekai, a ko ia moka kei te maheremoka ka tohu mena kei tetahi wharekai tenei rawa, kaore ranei.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Ka hiahia matou kia rua nga mahi kaiawhina. Ka whakamahia tetahi ki te whakakii i o maatau maheremoka ki nga raraunga matapōkere. Rarangi noa, engari me te tupono kei te wharekai ia taonga. Hei tauira, e whakapono ana ahau he iti noa nga wharekai i Moscow e kore e taea e koe te rahui i te tepu, a ki taku whakaaro ko te 20% o nga whare e pai ana mo nga kaiwhenua.

Ko te mahi tuarua ka huri te maheremoka ki te rarangi o nga wharekai.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Taupū Maheremoka i Haere: rapu i te tere mohoao
Hei whakautu i te patai "Whakaatuhia mai ki ahau nga wharekai utu iti he parani ka taea te rahui," me rua nga mahi: NOT me AND.

Ka taea e tatou te whakangawari ake i ta tatou waehere ma te whakamahi i te kaiwhakahaere uaua ake ME NOT.

Kei a matou nga mahi mo ia mahi. Ka haere raua e rua i roto i nga poro, tangohia nga huānga e rite ana mai i ia waahanga, whakakotahi ki tetahi mahi iti ka hoatu te hua ki roto i te waahanga kua puta.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Inaianei ka taea e taatau te whakamahi i a maatau maheremoka me nga mahi hei whakautu i te patai rapu.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Ehara i te mea teitei te mahi, ahakoa he tino ngawari nga mahi me te nui o te moni i penapenahia e matou ma te kore e whakahoki mai i tetahi waahanga hua hou ia wa ka karangahia te mahi.

I muri i te mahi i etahi wa poto me te pprof, i kite ahau kei te ngaro tetahi o nga mahi tino ngawari engari tino hirahira: te whakaurunga mahi.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Ko te meka ko te kaikoipoi Haere he tino wehi ki nga koropiko e haere ana i roto i nga poro, a ka kore e pai ki te whakauru i nga mahi e mau ana i enei momo koropiko.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Engari kaore au i te mataku ka taea e au te whakapohehe i te kaitoi ma te whakamahi i te goto hei utu mo te kopikopiko, penei i nga ra o mua.

Taupū Maheremoka i Haere: rapu i te tere mohoao
Taupū Maheremoka i Haere: rapu i te tere mohoao

Na, ka kite koe, inaianei ka koa te kaitoi i a maatau mahi! Ko te mutunga, ka taea e matou te penapena mo te 2 microseconds. Ehara i te kino!

Taupū Maheremoka i Haere: rapu i te tere mohoao

Ko te rua o nga pounamu he ngawari ki te kite mena ka ata titiro koe ki te putanga o te huihuinga. I tapirihia e te kaikoipi he taki rohenga poro i roto tonu i ta maatau kopae wera rawa atu. Ko te mea he reo haumaru a Go, kei te mataku te kaikoipi kei te rereke te rahi o aku tohenga e toru (e toru nga poro). I muri i nga mea katoa, tera pea ka puta mai he putunga putunga e kiia nei.

Me whakaahuru te kaikoipi ma te whakaatu he rite te rahi o nga poro katoa. Ka taea tenei ma te taapiri i tetahi haki ngawari i te timatanga o ta maatau mahi.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Ka kite i tenei, ka harikoa te kaikoipi ki te peke i te haki, ka mutu ka penapenahia e matou etahi atu 500 nanohekona.

Patu nui

Kaati, i kaha taatau ki te tarai i etahi mahi mai i ta maatau whakatinanatanga ngawari, engari he kino rawa atu tenei hua i nga taputapu o naianei.

Ko nga mea katoa e mahia ana e matou ko nga mahi moka taketake, a ka tino pai te mahi a o matou kaitukatuka. Engari, ko te mate, ka "whangai" i to maatau tukatuka me nga waahanga iti rawa o nga mahi. Ka mahi a maatau mahi i runga i te paita-a-paita. Ka taea e taatau te whakarereke i a maatau waehere ki te mahi me nga waahanga 8-paita ma te whakamahi i nga poro UInt64.

Taupū Maheremoka i Haere: rapu i te tere mohoao

Kei te kite koe, na tenei huringa iti i whakatere i to maatau kaupapa e waru nga wa ma te whakanui ake i te rahi o te puranga e waru nga wa. Ko te whiwhinga ka taea te kii he raina.

Taupū Maheremoka i Haere: rapu i te tere mohoao

Te whakatinanatanga i roto i te assembler

Taupū Maheremoka i Haere: rapu i te tere mohoao
Engari ehara tenei i te mutunga. Ka taea e a maatau kaitukatuka te mahi me te 16, 32 me te 64 paita. Ko enei mahinga "whanui" e kiia ana ko te ako kotahi nga raraunga maha (SIMD; kotahi tohutohu, maha nga raraunga), a ko te tukanga o te huri i te waehere kia whakamahia ai aua mahi ka kiia ko te vectorization.

Ko te mea pouri, ko te Go compiler kei tawhiti atu i te tino pai ki te vectorization. I tenei wa, ko te huarahi anake ki te whakatika i te waehere Haere ko te tango me te tuku a ringa i enei mahi ma te whakamahi i te Go assembler.

Taupū Maheremoka i Haere: rapu i te tere mohoao

Haere assembler he kararehe ke. Kei te mohio pea koe ko te reo huihuinga tetahi mea e tino herea ana ki te hoahoanga o te rorohiko e tuhi ana koe, engari ehara tera i te ahua o Go. Ko te Go assembler he rite tonu ki te IRL (te reo whakakanohi takawaenga) he reo takawaenga ranei: he tino turanga motuhake. He pai te mahi a Rob Pike pūrongo i runga i tenei kaupapa i etahi tau ki muri i GopherCon i Denver.

I tua atu, ka whakamahi a Go i te whakatakotoranga Mahere 9 rereke, he rereke mai i nga whakatakotoranga AT&T me Intel e whakaaetia ana.
Taupū Maheremoka i Haere: rapu i te tere mohoao
He pai te kii ko te tuhi Haere ki te assembler a ringa ehara i te mea tino ngahau.

Engari, ko te koa, kua rua nga taputapu taumata teitei hei awhina i a maatau ki te tuhi Haere assembler: PeachPy me te avo. Ko nga taputapu e rua e whakaputa ana i te Go assembler mai i te waehere taumata teitei kua tuhia ki te Python me te Haere.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Ko enei taputapu ka whakangwarihia nga mea penei i te tohatoha rehita, te tuhi i nga koropiko, me te tikanga whakangawari i te huarahi ki te uru atu ki te ao o nga kaupapa huihuinga i Go.

Ka whakamahia e matou te avo, no reira ka tata tonu a maatau kaupapa he kaupapa Go.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Koinei te ahua o te tauira ngawari o te kaupapa avo. He mahi matua() ta tatou, e whakaatu ana i roto i a ia ano te mahi Tāpiri() , ko te tikanga ko te taapiri i nga tau e rua. He mahi kaiawhina i konei ki te tiki i nga tawhā ma te ingoa me te tiki i tetahi o nga rehita tukatuka koreutu me te tika. Ko ia mahi tukatuka he mahi rite ki runga i te avo, penei i te ADDQ. Ka mutu, ka kite tatou i tetahi mahi kaiawhina mo te penapena i te uara ka puta.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Ma te karanga haere whakaputa, ka mahia e matou te kaupapa i runga i te avo, a, ko te mutunga, e rua nga konae ka puta:

  • tāpiri.s ki te waehere hua i roto i Haere assembler;
  • stub.go me nga pane mahi hei hono i nga ao e rua: Haere me te assembler.

Taupū Maheremoka i Haere: rapu i te tere mohoao
Inaianei kua kite tatou he aha nga mahi a avo me pehea, me titiro ki a tatou mahi. I whakatinanahia e ahau nga putanga scalar me te vector (SIMD) o nga mahi.

Me titiro ki nga putanga scalar i te tuatahi.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Pērā i te tauira o mua, kei te tono matou mo te rehita kaupapa whanui kore utu me te whaimana, kaore matou e hiahia ki te tatau i nga taapiri me nga rahi mo nga tautohetohe. ka mahia e avo enei mea katoa mo tatou.
Taupū Maheremoka i Haere: rapu i te tere mohoao
I whakamahia e matou he tapanga me te goto (he pekepeke ranei) ki te whakapai ake i te mahi me te tinihanga i te Kaihoko Haere, engari inaianei kei te mahi mai i te timatanga. Ko te tohu ko nga huringa he ariā taumata teitei. I roto i te assembler, he tapanga me peke noa ta matou.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Ko te toenga o te waehere kia mohio, kia marama. Ka peehia e matou he kopae me nga tapanga me te peke, ka tango i tetahi waahanga iti o nga raraunga mai i a maatau poro e rua, ka whakakotahi me te mahi moka (KAREA i tenei keehi) katahi ka hoatu te hua ki te poro ka puta. Katoa.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Koinei te ahua o te waehere assembler whakamutunga. Karekau matou i whai ki te tatau i nga utu me nga rahi (kua tohua ki te kaakaariki) me te pupuri i nga rehita kua whakamahia (kua tohua ki te whero).
Taupū Maheremoka i Haere: rapu i te tere mohoao
Mena ka whakatauritehia te mahinga o te whakatinanatanga reo huihuinga me te mahi o te whakatinanatanga pai i roto i te Haere, ka kite tatou he rite tonu. A ka tumanakohia tenei. Ina hoki, karekau he mahi motuhake i mahia e matou - he mea hanga noa e matou he aha te mahi a te kaikohikohi Go.

Kia aroha mai, e kore e taea e matou te akiaki i te kaitoi ki te whakararangi i a maatau mahi kua tuhia ki te reo huihuinga. I tenei wa karekau he ahuatanga pera a te Kaihoko Haere, ahakoa kua roa te tono kia taapiri atu.

Koinei te take kaore e taea te whai hua mai i nga mahi iti i roto i te reo huihuinga. Me tuhi mahi nui, whakamahi ranei i te kete pangarau/bits hou, karohia ranei te reo assembler.

Kia titiro tatou inaianei ki nga putanga vector o a tatou mahi.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Mo tenei tauira, i whakatau ahau ki te whakamahi i te AVX2, no reira ka whakamahia e matou nga mahi e mahi ana i runga i nga waahanga 32-paita. Ko te hanganga o te waehere he tino rite ki te putanga scalar: te uta i nga tawhā, tono mo te rehita tiri koreutu, aha atu.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Ko tetahi o nga mahi hou ko nga mahinga vector whanui e whakamahi ana i nga rehita whanui motuhake. Mo nga wahanga 32-paita, he rehita enei kua tohua ki mua me te Y. Koinei te take ka kite koe i te mahi YMM() i roto i te waehere. Mena kei te whakamahi ahau i te AVX-512 me nga moka-64-bit, ko te tohu tuatahi ko Z.

Ko te mea hou tuarua ko taku whakatau ki te whakamahi i te arotautanga e kiia nei ko te wetewete o te kopae, ko te tikanga o te mahi a-ringa i nga mahi e waru i mua i te peke ki te timatanga o te kapiti. Ko tenei arotautanga ka whakaiti i te maha o nga manga i roto i te waehere, a ka whakaitihia e te maha o nga rehita kore utu e waatea ana.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Ana, me pehea te mahi? He ataahua ia! I tutuki i a maatau te tere tere mo te whitu nga wa ka whakaritea ki te otinga Haere pai. Mīharo, tika?
Taupū Maheremoka i Haere: rapu i te tere mohoao
Engari ko tenei whakatinanatanga ka taea pea te whakatere ma te whakamahi i te AVX-512, te tango i mua, te JIT ranei (kaiwhakahiato-wa-tika) mo te kaihōtaka uiui. Engari he kaupapa tenei mo te ripoata motuhake.

He raruraru ki nga tohu maheremoka

Inaianei kua titiro kee matou ki te whakatinanatanga ngawari o te tohu tohu maheremoka i roto i te Haere me tetahi mea whai hua ake i roto i te reo huihuinga, me korero tatou mo te aha i tino uaua ai te whakamahi i nga tohu tohu maheremoka.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Ko nga pepa tawhito e whakahua ana i nga raru e toru me nga tohu tohu maheremoka, engari ko nga pepa hou me taku whakapae kua kore e whai take. E kore tatou e ruku hohonu ki ia o enei raruraru, engari ka titiro ki raro.

Ko te raruraru o te cardinality teitei

Na, ka korerotia mai ki a matou ko nga tohu tohu bitmap e tika ana mo nga mara he iti noa nga uara, ara, he iti noa nga uara (hei tauira, te ira tangata, te tae kanohi ranei), a ko te take ko te ahua o enei mara (kotahi. moka mo ia uara) i te mea he nui te cardinality, ka nui rawa te waahi ka nui rawa atu te waahi, ka mutu, ka iti noa te whakakii i enei tohu tohu maheremoka.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Taupū Maheremoka i Haere: rapu i te tere mohoao
I etahi wa ka whakamahia e matou he tohu rereke, penei i te paerewa e whakamahia ana e matou hei tohu tau. Engari na te taenga mai o nga algorithms compression i whakarereke i nga mea katoa. I roto i nga tekau tau kua pahure ake nei, kua tae mai e nga kaiputaiao me nga kairangahau te maha o nga momo hātepe compression mo nga maheremoka. Ko te tino painga ko te kore he take ki te wetewete i nga maheremoka ki te mahi i nga mahi moka - ka taea e tatou te mahi tika i nga mahi moka ki runga i nga mapi biti.
Taupū Maheremoka i Haere: rapu i te tere mohoao
No na tata nei, kua timata te puta mai o nga huarahi ranu, penei i nga mapi bit e haruru ana. Ka whakamahia e ratou nga ahuatanga rereke e toru mo nga maheremoka - ko nga maheremoka ano, ko nga raupapa me nga mea e kiia nei ko nga rere moka - me te taurite i waenganui i a raatau hei whakanui ake i te mahi me te whakaiti i te kai mahara.

Ka kitea e koe nga maheremoka haruru i roto i nga tono rongonui. He maha kee nga whakatinanatanga mo nga momo reo hootaka, neke atu i te toru nga whakatinanatanga mo Go.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Ko tetahi atu huarahi ka taea te awhina i a tatou ki te whakatutuki i te cardinality teitei ko te binning. Whakaarohia kei a koe tetahi mara e tohu ana i te teitei o te tangata. Ko te teitei he tau maangi, engari kaore tatou te tangata e whakaaro penei. Ki a maatau kaore he rereketanga i waenga i te teitei 185,2 cm me te 185,3 cm.

Te ahua ka taea e taatau te whakarōpū i nga uara rite ki nga roopu i roto i te 1 cm.

A, ki te mohio ano tatou he iti noa nga tangata he poto ake i te 50 cm me te teitei ake i te 250 cm, katahi ka taea e tatou te huri i tetahi mara me te cardinality mutunga kore ki te mara me te cardinality o te 200 uara.

Ae ra, mena e tika ana, ka taea e taatau te mahi taapiri i muri mai.

Raruraru Aratuku Teitei

Ko te raru e whai ake nei me nga tohu maheremoka ko te mea he utu nui te whakahou i a raatau.

Me taea e nga Raraunga Raraunga te whakahou i nga raraunga i te wa e rapu ana nga rau o etahi atu patai i nga raraunga. Me raka matou hei karo i nga raru ki te urunga raraunga kotahi, ki etahi atu raruraru tiritahi ranei. A, ki te mea kotahi te raka nui, ka raru - te tautohetohe maukati, ina ka huri tenei raka hei kohungahunga.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Ka taea te whakatau, te karo ranei i tenei rapanga ma te whakamahi i te sharding, te whakamahi ranei i nga tohu tohu.

He mea ngawari, he mea rongonui te tohatoha. Ka taea e koe te wehewehe i tetahi tohu maheremoka pera i etahi atu raraunga. Engari i te kotahi raka nui, ka whiwhi koe i te paihere o nga raka iti, me te kia whakakahoretia atu o te tautohetohe maukati.

Ko te huarahi tuarua ki te whakaoti rapanga ko te whakamahi i nga tohu tohu. Ka taea e koe tetahi kape o te taurangi ka whakamahia e koe mo te rapu, mo te panui ranei, me tetahi ka whakamahia e koe hei tuhi, hei whakahou ranei. A kotahi i roto i tetahi waa (hei tauira, kotahi ia 100 ms, 500 ms ranei) ka taaruatia e koe ka huri. Ko te tikanga, ko tenei huarahi e tika ana mo nga keehi ka taea e to tono te whakahaere i te taurangi rapu iti.

Ko enei huarahi e rua ka taea te whakamahi i te wa kotahi: ka taea e koe te whai i tetahi taurangi kua oti te whakaputa.

Nga patai uaua ake

Ko te raru whakamutunga mo nga taupū maheremoka ko te korero mai kaore i te pai mo nga momo patai uaua ake, penei i nga patai mo te roanga.

Ae, ki te whakaaro koe, ko nga mahi moka penei i te AND, OR, me etahi atu, kaore e tino pai mo nga patai a la "Whakaatuhia mai ki ahau nga hotera me nga reiti ruma mai i te 200 ki te 300 taara ia po."
Taupū Maheremoka i Haere: rapu i te tere mohoao
Ko te otinga poauau me te tino poauau ko te tango i nga hua mo ia uara taara me te whakakotahi ki te mahinga OR.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Ko te otinga pai ake ko te whakamahi whakarōpūtanga. Hei tauira, i roto i nga roopu 50 taara. Ma tenei ka tere ake ta maatau mahi ma te 50 nga wa.

Engari he ngawari te whakaoti rapanga ma te whakamahi i tetahi tirohanga i hangaia mo tenei momo tono. I roto i nga pepa putaiao e kiia ana ko te mapi-whakawaehere awhe.
Taupū Maheremoka i Haere: rapu i te tere mohoao
I roto i tenei ahua, kaore matou e tautuhi noa i tetahi moka mo etahi uara (hei tauira, 200), engari ka whakatauhia tenei uara me nga mea katoa kia teitei ake. 200 me runga ake. He rite mo te 300: 300 me runga ake. A pera tonu.

Ma te whakamahi i tenei ahua, ka taea e tatou te whakautu i tenei momo patai rapu ma te takahi i te taurangi e rua noa iho. Tuatahi, ka whiwhi tatou i te rarangi o nga hotera he iti ake te utu o te ruma, $300 ranei, katahi ka tangohia mai i reira nga mea he iti te utu o te ruma, $199 ranei. Kua reri.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Ka miharo koe, engari ka taea ano nga tohu whenua ma te whakamahi i nga tohu tohu maheremoka. Ko te mahi he ki te whakamahi i te ahua āhuahanga e karapoti ana i to taunga ki te ahua ahuahanga. Hei tauira, S2 mai i a Google. Ko te ahua ka taea te whakaatu i roto i te ahua o te toru, neke atu ranei o nga raina whakawhiti ka taea te tatau. Ma tenei ka taea e tatou te huri i a tatou geoquery ki etahi patai "i te taha o te waahi" (i runga i enei rarangi tau).

Rite Whakatairanga

Te ti'aturi nei au he iti nei taku hiahia ki a koe, kei a koe tetahi atu taputapu whai hua kei roto i to taonga. Mena ka hiahia koe ki te mahi penei, ka mohio koe he aha te huarahi hei titiro.

Heoi, karekau he wa, he manawanui, he rauemi ranei mo te katoa ki te hanga tohu tohu maheremoka mai i te wahanga. Ina koa nga mea matatau ake, ma te whakamahi i te SIMD, hei tauira.

Waimarie, he maha nga otinga kua rite hei awhina i a koe.
Taupū Maheremoka i Haere: rapu i te tere mohoao

Maheremoka haruru

Tuatahi, tera ano te whare pukapuka mapi mapi e ngunguru nei i korerohia e au. Kei roto nga ipu katoa me nga mahi moka ka hiahia koe ki te hanga i tetahi taurangi maheremoka-katoa.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Engari, i tenei wa, kaore tetahi o nga whakatinanatanga Haere e whakamahi ana i te SIMD, ko te tikanga he iti ake te mahi a Go i nga whakatinanatanga C, hei tauira.

Pilosa

Ko tetahi atu hua hei awhina i a koe ko te Pilosa DBMS, he pono, he tohu tohu maheremoka anake. He otinga ahua hou tenei, engari kei te wikitoria nga ngakau i te tere tere.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Ka whakamahi a Pilosa i nga mapi moka e haruru ana i roto, ka hoatu ki a koe te kaha ki te whakamahi i aua mea, te whakamaarama me te whakamarama i nga mea katoa i korerohia e au i runga ake nei: te whakarōpū, nga mapi-mahere-awhe, te kaupapa o te mara, aha atu.

Me titiro tere ki tetahi tauira o te whakamahi Pilosa ki te whakautu i tetahi patai kua mohio koe.
Taupū Maheremoka i Haere: rapu i te tere mohoao
He rite tonu te tauira ki ta koe i kite i mua. Ka waihangahia e matou he kiritaki ki te tūmau Pilosa, ka hangaia he taurangi me nga mara e tika ana, ka whakakiia a matou mara ki nga raraunga matapōkere me nga tupono, ka mutu, ka mahia te uiui mohio.

I muri i tera, ka whakamahia e matou KORE i runga i te mara "utu", katahi ka whakawhiti i te hua (me te ME ranei) me te mara "terrace" me te mara "rahui". Ka mutu, ka whiwhi tatou i te hua whakamutunga.
Taupū Maheremoka i Haere: rapu i te tere mohoao
Kei te tino tumanako ahau ka puta ano tenei momo taurangi hou i roto i nga DBMS penei i a MySQL me PostgreSQL - bitmap indexes.
Taupū Maheremoka i Haere: rapu i te tere mohoao

mutunga

Taupū Maheremoka i Haere: rapu i te tere mohoao
Mena kare ano koe kia moe, tena koe. Me korero poto ahau mo nga kaupapa maha na te iti o te wa, engari ko taku tumanako he whai hua te korero, he whakahihiko pea.

He pai ki te mohio mo nga tohu tohu maheremoka, ahakoa kaore koe e hiahia ana inaianei. Waiho hei taputapu ano i roto i to pouaka taputapu.

Kua tirohia e matou nga tini mahi tinihanga mo Go me nga mea kaore ano kia tino pai te whakahaere a te kaitoi haere. Engari he tino whai hua tenei mo nga kaitoha a Go katoa kia mohio.

Heoi ano taku i hiahia ki te korero atu ki a koe. Mauruuru koe!

Source: will.com

Tāpiri i te kōrero