Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ

Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ

αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†

αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž•αŸ’αžŠαž›αŸ‹αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž“αŸαŸ‡αž‡αžΆαž—αžΆαžŸαžΆαž’αž„αŸ‹αž‚αŸ’αž›αŸαžŸαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž“αŸ’αž“αž·αžŸαžΈαž‘ GopherCon Russia 2019 αž“αŸ…αž‘αžΈαž€αŸ’αžšαž»αž„αž˜αžΌαžŸαŸ’αž‚αžΌ αž“αž·αž„αž‡αžΆαž—αžΆαžŸαžΆαžšαž»αžŸαŸ’αžŸαžΈαž“αŸ…αž―αž€αž·αž…αŸ’αž…αž”αŸ’αžšαž‡αž»αŸ†αž˜αž½αž™αž“αŸ… Nizhny Novgorod αŸ” αž™αžΎαž„αž€αŸ†αž–αž»αž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž•αŸ‚αž“αž‘αžΈ - αž’αž˜αŸ’αž˜αžαžΆαžαž·αž…αž‡αžΆαž„ B-tree αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž·αž“αž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαžαž·αž…αž‡αžΆαž„αž“αŸαŸ‡αž‘αŸαŸ” αž€αžΆαžšαž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€ αž€αžΆαžšαžαž αžŸαž»αž“αŸ’αž‘αžšαž€αžαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž“αŸ’αž“αž·αžŸαžΈαž‘αž‡αžΆαž—αžΆαžŸαžΆαž’αž„αŸ‹αž‚αŸ’αž›αŸαžŸ αž“αž·αž„αž”αŸ’αžšαžαž·αž…αžΆαžšαžΉαž€αž’αžαŸ’αžαž”αž‘αž‡αžΆαž—αžΆαžŸαžΆαžšαž»αžŸαŸ’αžŸαžΈαŸ”

αž™αžΎαž„αž“αžΉαž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαžαžΎαž›αž·αž”αž·αž€αŸ’αžšαž˜αž•αŸ‚αž“αž‘αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αžšαž”αŸ€αž”αžŽαžΆ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžœαžΆαž”αŸ’αžšαžŸαžΎαžšαž‡αžΆαž„ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžœαžΆαž’αžΆαž€αŸ’αžšαž€αŸ‹αž‡αžΆαž„αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž•αŸ’αžŸαŸαž„αž‘αŸ€αž αž αžΎαž™αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžŽαžΆαžŠαŸ‚αž›αžœαžΆαž›αžΏαž“αž‡αžΆαž„αž–αž½αž€αžœαžΆαžαŸ’αž›αžΆαŸ†αž„αŸ” αžŸαžΌαž˜αž˜αžΎαž› DBMSs αžŠαŸαž–αŸαž‰αž“αž·αž™αž˜αž˜αž½αž™αžŽαžΆαžŠαŸ‚αž›αž˜αžΆαž“αž›αž·αž”αž·αž€αŸ’αžšαž˜αž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαžαžšαž½αž…αž αžΎαž™αŸ” αžαŸ„αŸ‡αž–αŸ’αž™αžΆαž™αžΆαž˜αžŸαžšαžŸαŸαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„ Go αŸ” αž αžΎαž™ "αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž„αŸ’αž’αŸ‚αž˜" αž™αžΎαž„αž“αžΉαž„αž”αŸ’αžšαžΎαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸ‚αž›αžαŸ’αžšαŸ€αž˜αžšαž½αž…αž‡αžΆαžŸαŸ’αžšαŸαž…αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž―αž€αž‘αŸαžŸαž›αžΏαž“αžšαž αŸαžŸαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”

αžαŸ’αž‰αž»αŸ†αž–αž·αžαž‡αžΆαžŸαž„αŸ’αžƒαžΉαž˜αžαžΆαžŸαŸ’αž“αžΆαžŠαŸƒαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸ αž“αž·αž„αž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αŸ” αž‘αŸ…!

αžŸαŸαž…αž€αŸ’αžαžΈαžŽαŸ‚αž“αžΆαŸ†


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

αžŸαž½αžŸαŸ’αžαžΈβ€‹αž’αŸ’αž“αž€β€‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αŸ’αž“αžΆ! αž˜αŸ‰αŸ„αž„αž”αŸ’αžšαžΆαŸ†αž˜αž½αž™αž›αŸ’αž„αžΆαž… αž αžΎαž™αž™αžΎαž„αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αŸ’αž“αžΆαž“αžΏαž™αž αžαŸ‹αžŽαžΆαžŸαŸ‹αŸ” αž–αŸαž›αžœαŸαž›αžΆαžŠαŸαž›αŸ’αž’αžŠαžΎαž˜αŸ’αž”αžΈαž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž‘αŸ’αžšαžΉαžŸαŸ’αžŠαžΈαžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‚αž½αžšαž±αŸ’αž™αž’αž»αž‰αž˜αŸ‚αž“αž‘αŸ? αž€αž»αŸ†αž”αžΆαžšαž˜αŸ’αž— αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž˜αžΆαž“αž€αžΌαžŠαž”αŸ’αžšαž—αž–αž–αžΈαžšαž”αžΈαž‡αž½αžšαž“αŸ…αž‘αžΈαž“αŸαŸ‡ αž“αž·αž„αž‘αžΈαž“αŸ„αŸ‡αŸ” πŸ™‚

αžšαžΏαž„αž€αŸ†αž”αŸ’αž›αŸ‚αž„αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž€αŸ’αžšαŸ…αž–αžΈαž“αŸαŸ‡ αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž‚αžΊαž–αŸ„αžšαž–αŸαž‰αžŠαŸ„αž™αž–αŸαžαŸŒαž˜αžΆαž“ αž αžΎαž™αž™αžΎαž„αž˜αž·αž“αž˜αžΆαž“αž–αŸαž›αž…αŸ’αžšαžΎαž“αž‘αŸαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŸαžΌαž˜αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αžαŸ’αž„αŸƒαž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαžšαžΏαž„αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸˆ

  • αžαžΎαž’αŸ’αžœαžΈαž‘αŸ…αž‡αžΆαžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸ;
  • αž’αŸ’αžœαžΈβ€‹αž‘αŸ…β€‹αž‡αžΆβ€‹αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸβ€‹αž•αŸ‚αž“αž‘αžΈ;
  • αž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž”αŸ’αžšαžΎ αž“αž·αž„αž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αžœαžΆαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎ αž“αž·αž„αž αŸαžαž»αž’αŸ’αžœαžΈ;
  • αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžŸαžΆαž˜αž‰αŸ’αž‰αž“αŸ…αž€αŸ’αž“αž»αž„ Go αž“αž·αž„αž€αžΆαžšαžαžŸαŸŠαžΌαžαž·αž…αžαž½αž…αž‡αžΆαž˜αž½αž™αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„;
  • αžŸαžΆαž˜αž‰αŸ’αž‰αžαž·αž…αž‡αžΆαž„αž”αž“αŸ’αžαž·αž… αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž”αŸ’αžšαž€αž”αžŠαŸ„αž™αž•αž›αž·αžαž—αžΆαž–αž…αŸ’αžšαžΎαž“αž“αŸ…αž€αŸ’αž“αž»αž„ Go assembler;
  • "αž”αž‰αŸ’αž αžΆ" αž“αŸƒαžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαž;
  • αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžαžΎαžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž‚αžΊαž‡αžΆαž’αŸ’αžœαžΈ?

Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ

αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž‚αžΊαž‡αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αžŠαŸ‚αž›αž™αžΎαž„αžšαž€αŸ’αžŸαžΆ αž“αž·αž„αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž”αž“αŸ’αžαŸ‚αž˜αž›αžΎαž‘αž·αž“αŸ’αž“αž“αŸαž™αž…αž˜αŸ’αž”αž„αŸ” αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαž“αž›αŸ’αž”αžΏαž“αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αŸ” αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž›αž·αž”αž·αž€αŸ’αžšαž˜ αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αž“αžΉαž„αžαž˜αŸ’αžšαžΌαžœαž±αŸ’αž™αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„ (αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž αŸ…αžαžΆαž€αžΆαžšαžŸαŸ’αž€αŸαž“αž–αŸαž‰αž›αŸαž‰) αž αžΎαž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸαŸ‡αž˜αžΆαž“αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž“αŸƒαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž™αŸ‰αžΆαž„αž…αŸ’αžšαžΎαž“ αž αžΎαž™αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαž‚αžΊαž™αžΊαžαž–αŸαž€αŸ” αžαžΆαž˜αž§αžαŸ’αžŠαž˜αž‚αžαž· αž™αžΎαž„αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αž›αŸ„αž€αžΆαžšαžΈαž αž¬αžαŸαžšαž˜αž½αž™αŸ”

αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž”αŸ’αžšαž’αžΆαž“αž”αž‘αžŠαŸαžŸαŸ’αž˜αž»αž‚αŸ’αžšαžŸαŸ’αž˜αžΆαž‰ αž–αŸ„αžšαž–αŸαž‰αž‘αŸ…αžŠαŸ„αž™ subtleties αž“αž·αž„αž€αžΆαžšαžŠαŸ„αŸ‡αžŠαžΌαžš αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžŸαž˜αŸ’αž›αžΉαž„αž˜αžΎαž›αž€αžΆαžšαžœαž·αžœαžŒαŸ’αžαž“αŸ αž“αž·αž„αž€αžΆαžšαžŸαŸ’αžšαžΆαžœαž‡αŸ’αžšαžΆαžœαž‡αžΆαž…αŸ’αžšαžΎαž“αž‘αžŸαŸ’αžŸαžœαžαŸ’αžŸαžšαŸαž“αŸƒαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ αžαŸ’αž‰αž»αŸ†αž˜αžΆαž“αž†αž“αŸ’αž‘αŸˆαž€αŸ’αž“αž»αž„αž€αžΆαžšαž“αž·αž™αžΆαž™αžαžΆαž˜αžΆαž“αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž™αŸ‰αžΆαž„αž‘αžΌαž›αŸ†αž‘αžΌαž›αžΆαž™αž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž›αž·αž”αž·αž€αŸ’αžšαž˜αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ”

Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ

αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžŠαŸ†αž”αžΌαž„αž‚αžΊαž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž›αŸ†αž αžŸαŸ’αžœαŸ‚αž„αžšαž€αžαžΆαž˜αž‹αžΆαž“αžΆαž“αž»αž€αŸ’αžšαž˜ αžŠαŸ„αž™αž”αŸ‚αž„αž…αŸ‚αž€αž‘αŸ†αž αŸ†αžŸαŸ’αžœαŸ‚αž„αžšαž€αž‘αŸ…αž‡αžΆαž•αŸ’αž“αŸ‚αž€αžαžΌαž…αŸ—αŸ”

αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž™αžΎαž„αž’αŸ’αžœαžΎαž”αŸ‚αž”αž“αŸαŸ‡αžŠαŸ„αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαž—αŸαž‘αžŠαžΎαž˜αžˆαžΎαž•αŸ’αžŸαŸαž„αŸ—αŸ” αž§αž‘αžΆαž αžšαžŽαŸαž˜αž½αž™αž’αžΆαž…αž‡αžΆαž”αŸ’αžšαž’αž”αŸ‹αž’αŸ†αž“αŸƒαžŸαž˜αŸ’αž—αžΆαžšαŸˆαž“αŸ…αž€αŸ’αž“αž»αž„αž‘αžΌαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαŸ‚αž›αž˜αžΆαž“αž”αŸ’αžšαž’αž”αŸ‹αžαžΌαž…αŸ—αž“αŸƒαžŸαž˜αŸ’αž—αžΆαžšαŸˆαžŠαŸ‚αž›αž”αŸ‚αž„αž…αŸ‚αž€αž‘αŸ…αž‡αžΆαž”αŸ’αžšαž’αžΆαž“αž”αž‘αž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŸαž˜αŸ’αž—αžΆαžšαŸˆ αž’αŸ’αž“αž€αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαžŸαŸ’αžœαŸ‚αž„αžšαž€αž–αž½αž€αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž’αž”αŸ‹αžŠαŸ‚αž›αž“αž·αž™αžΆαž™αžαžΆ "αžŸαž˜αŸ’αž—αžΆαžšαŸˆ" αž‡αžΆαž‡αžΆαž„αž˜αž½αž™αžŠαŸ‚αž›αž“αž·αž™αžΆαž™αžαžΆ "αžαžΌαž‚αžΈ" αž˜αŸ‚αž“αž‘αŸ?

Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ

αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‘αžΈαž–αžΈαžšαž‚αžΊαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž’αžΆαžαž»αžŠαŸ‚αž›αž…αž„αŸ‹αž”αžΆαž“αž—αŸ’αž›αžΆαž˜αŸ—αž¬αž€αŸ’αžšαž»αž˜αž“αŸƒαž’αžΆαžαž»αŸ” αž™αžΎαž„β€‹αž’αŸ’αžœαžΎβ€‹αžœαžΆβ€‹αž€αŸ’αž“αž»αž„β€‹αž•αŸ‚αž“αž‘αžΈβ€‹αžŸαž‰αŸ’αž‰αžΆ αž¬β€‹αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸβ€‹αž”αž‰αŸ’αž…αŸ’αžšαžΆαžŸαŸ” αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž•αŸ‚αž“αž‘αžΈ hash αž‚αžΊαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž‘αŸ…αž“αžΉαž„αž§αž‘αžΆαž αžšαžŽαŸαž˜αž»αž“ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αž”αŸ’αžšαž’αž”αŸ‹αž˜αž½αž™ αž’αŸ’αž“αž€αž˜αžΆαž“αž”αŸ’αžšαž’αž”αŸ‹αžαžΌαž…αŸ—αž“αŸƒαž’αžΆαžαž»αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž‘αžΌαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ

αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‘αžΈαž”αžΈαž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαž›αž»αž”αž”αŸ†αž”αžΆαžαŸ‹αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αŸ” αž™αžΎαž„αž’αŸ’αžœαžΎαžœαžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎαžαž˜αŸ’αžšαž„ Bloom αž¬αžαž˜αŸ’αžšαž„ cuckoo αŸ” αž’αŸ’αž“αž€αž‘αžΈαž˜αž½αž™αž•αŸ’αžαž›αŸ‹αž…αž˜αŸ’αž›αžΎαž™αž—αŸ’αž›αžΆαž˜αŸ— αžŠαŸ„αž™αž‡αž½αž™αžŸαž„αŸ’αžšαŸ’αž‚αŸ„αŸ‡αž’αŸ’αž“αž€αž–αžΈαž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αŸ”

Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ

αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž…αž»αž„αž€αŸ’αžšαŸ„αž™αž‚αžΊαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžαžΆαž˜αž–αž›αž–αŸαž‰αž›αŸαž‰αžŠαŸ‚αž›αž•αŸ’αž“αŸ‚αž€αžšαžΉαž„αž‘αŸ†αž“αžΎαž”αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž™αžΎαž„αŸ” αž“αŸαŸ‡β€‹αž‡αžΆβ€‹αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž›β€‹αž™αžΎαž„β€‹αž’αŸ’αžœαžΎβ€‹αž€αŸ’αž“αž»αž„β€‹αž›αž·αž”αž·αž€αŸ’αžšαž˜β€‹αž•αŸ‚αž“αž‘αžΈβ€‹αž”αŸŠαžΈαžαŸ” αž”αžΆαž‘/αž…αžΆαžŸ αž–αŸαž›αž”αŸ’αžšαžΎαž–αž½αž€αžœαžΆ αž‡αž½αž“αž€αžΆαž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž›αž·αž”αž·αž€αŸ’αžšαž˜αž‘αžΆαŸ†αž„αž˜αžΌαž› αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αž’αŸ’αžœαžΎαžœαžΆαž™αŸ‰αžΆαž„αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αžαŸ’αž–αžŸαŸ‹αŸ”

αžŠαžΌαž…αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž“αž·αž™αžΆαž™ αž”αŸ’αžšαž’αžΆαž“αž”αž‘αž“αŸƒαž›αž·αž”αž·αž€αŸ’αžšαž˜αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‚αžΊαž’αŸ†αž’αŸαž„ αž“αž·αž„αž–αŸ„αžšαž–αŸαž‰αž‘αŸ…αžŠαŸ„αž™αž€αžΆαžšαžŸαž˜αŸ’αžšαž”αžŸαž˜αŸ’αžšαž½αž›αŸ” αž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆ αž–αŸαž›αžαŸ’αž›αŸ‡αž™αžΎαž„αž’αžΆαž…αž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‡αžΆαž…αŸ’αžšαžΎαž“αž€αŸ’αž“αž»αž„αž–αŸαž›αžαŸ‚αž˜αž½αž™αŸ– αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž›αŸ’αž”αžΏαž“αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αžšαžΎαž“ αž¬αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž‚αŸ’αžšαž”αžŠαžŽαŸ’αžαž”αŸ‹αž‚αŸ’αžšαž”αŸ‹αž”αŸ’αžšαž—αŸαž‘αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“αŸ”

αžαŸ’αž„αŸƒαž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžŠαŸ‚αž›αž‚αŸαžŸαŸ’αž‚αžΆαž›αŸ‹αžαž·αž…αž”αŸ†αž•αž»αžαž“αŸƒαž‘αžΆαŸ†αž„αž“αŸαŸ‡ - αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαžαŸ”

αžαžΎβ€‹αžαŸ’αž‰αž»αŸ†β€‹αž‡αžΆβ€‹αž“αžšαžŽαžΆβ€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž“αž·αž™αžΆαž™β€‹αž›αžΎβ€‹αž”αŸ’αžšαž’αžΆαž“αž”αž‘β€‹αž“αŸαŸ‡?

Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ

αžαŸ’αž‰αž»αŸ†αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž’αŸ’αž“αž€αžŠαžΉαž€αž“αžΆαŸ†αž€αŸ’αžšαž»αž˜αž“αŸ… Badoo (αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž’αŸ’αž“αž€αžŸαŸ’αž‚αžΆαž›αŸ‹αž•αž›αž·αžαž•αž›αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžšαž”αžŸαŸ‹αž™αžΎαž„ Bumble)αŸ” αž™αžΎαž„αž˜αžΆαž“αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž…αŸ’αžšαžΎαž“αž‡αžΆαž„ 400 αž›αžΆαž“αž“αžΆαž€αŸ‹αž“αŸ…αž‡αž»αŸ†αžœαž·αž‰αž–αž·αž—αž–αž›αŸ„αž€ αž“αž·αž„αž˜αž»αžαž„αžΆαžšαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž€αžΆαžšαž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αžŠαŸαž›αŸ’αž’αž”αŸ†αž•αž»αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αž½αž€αž‚αŸαŸ” αž™αžΎαž„αž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“ αžšαž½αž˜αž‘αžΆαŸ†αž„αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαžαŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžαžΎαžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαžαž‚αžΊαž‡αžΆαž’αŸ’αžœαžΈ?

Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
Bitmap indexes αžŠαžΌαž…αžŠαŸ‚αž›αžˆαŸ’αž˜αŸ„αŸ‡αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰ αž”αŸ’αžšαžΎ bitmap ឬ bitsets αžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αžœαžαŸ’αžαž›αž·αž”αž·αž€αŸ’αžšαž˜αžŸαŸ’αžœαŸ‚αž„αžšαž€αŸ” αžαžΆαž˜αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž—αŸ’αž“αŸ‚αž€αžšαž”αžŸαŸ‹αž”αž€αŸ’αžŸαžΈ αž›αž·αž”αž·αž€αŸ’αžšαž˜αž“αŸαŸ‡αž˜αžΆαž“αžšαžΌαž”αž—αžΆαž–αž˜αž½αž™ αž¬αž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αžαŸ†αžŽαžΆαž„αž±αŸ’αž™αž’αž„αŸ’αž‚αž—αžΆαž–αžŽαžΆαž˜αž½αž™ (αžŠαžΌαž…αž‡αžΆαž˜αž“αž»αžŸαŸ’αžŸ) αž“αž·αž„αž›αž€αŸ’αžαžŽαŸˆαžŸαž˜αŸ’αž”αžαŸ’αžαž· αž¬αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžšαž”αžŸαŸ‹αžœαžΆ (αž’αžΆαž™αž» αž–αžŽαŸŒαž—αŸ’αž“αŸ‚αž€αŸ”αž›αŸ”) αž“αž·αž„αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ„αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž”αŸŠαžΈαž (AND, OR, NOT ) αžŠαžΎαž˜αŸ’αž”αžΈαž†αŸ’αž›αžΎαž™αžŸαŸ†αžŽαž½αžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž™αžΎαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž”αŸ’αžšαžΆαž”αŸ‹αžαžΆ αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαžαž‚αžΊαžŸαž˜αž”αŸ†αž•αž»αž αž“αž·αž„αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž”αŸ†αž•αž»αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžšαžŽαžΈαžŠαŸ‚αž›αž˜αžΆαž“αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αžŠαŸ‚αž›αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž“αžΌαžœαžŸαŸ†αžŽαž½αžšαž“αŸ…αž‘αžΌαž‘αžΆαŸ†αž„αž‡αž½αžšαžαž˜αŸ’αž›αŸƒαž‘αžΆαž”αž‡αžΆαž…αŸ’αžšαžΎαž“ (αž‚αž·αžαžαžΆ "αž–αžŽαŸŒαž—αŸ’αž“αŸ‚αž€" ឬ "αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž’αžΆαž–αžΆαž αŸαž–αž·αž–αžΆαž αŸ" αž’αŸ€αž”αž“αžΉαž„αž’αŸ’αžœαžΈαž˜αž½αž™αžŠαžΌαž…αž‡αžΆ "αž…αž˜αŸ’αž„αžΆαž™αž–αžΈαž€αžŽαŸ’αžαžΆαž›αž‘αžΈαž€αŸ’αžšαž»αž„")αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αžαŸ’αž‰αž»αŸ†β€‹αž“αžΉαž„β€‹αž”αž„αŸ’αž αžΆαž‰β€‹αž–αŸαž›β€‹αž€αŸ’αžšαŸ„αž™β€‹αžαžΆβ€‹αž–αž½αž€β€‹αžœαžΆβ€‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšβ€‹αž›αŸ’αž’β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž‡αž½αžšβ€‹αžˆαžš cardinality αžαŸ’αž–αžŸαŸ‹β€‹αž•αž„β€‹αžŠαŸ‚αžšαŸ”

αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž§αž‘αžΆαž αžšαžŽαŸαžŸαžΆαž˜αž‰αŸ’αž‰αž”αŸ†αž•αž»αžαž“αŸƒαžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαžαŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αžŸαŸ’αžšαž˜αŸƒαžαžΆαž™αžΎαž„αž˜αžΆαž“αž”αž‰αŸ’αž‡αžΈαž—αŸ„αž‡αž“αžΈαž™αžŠαŸ’αž‹αžΆαž“αž“αŸ…αž‘αžΈαž€αŸ’αžšαž»αž„αž˜αŸ‰αžΌαžŸαŸ’αž‚αžΌαžŠαŸ‚αž›αž˜αžΆαž“αž‘αŸ’αžšαž–αŸ’αž™αžŸαž˜αŸ’αž”αžαŸ’αžαž·αž‚αŸ„αž›αž–αžΈαžšαžŠαžΌαž…αž“αŸαŸ‡:

  • αž“αŸ…αž‡αž·αžαžšαžαž—αŸ’αž›αžΎαž„αž€αŸ’αžšαŸ„αž˜αžŠαžΈ;
  • αž˜αžΆαž“αž€αž“αŸ’αž›αŸ‚αž„αž…αžαžšαžαž™αž“αŸ’αžαž―αž€αž‡αž“;
  • αž˜αžΆαž“ veranda (αž˜αžΆαž“αžšαžΆαž”αžŸαŸ’αž˜αžΎαžš);
  • αž’αŸ’αž“αž€αž’αžΆαž…αž€αž€αŸ‹αžαž» (αž‘αž‘αž½αž›αž™αž€αž€αžΆαžšαž€αž€αŸ‹αž‘αž»αž€);
  • αžŸαž˜αžšαž˜αŸ’αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž”αž½αžŸ (vegan friendly);
  • αžαŸ’αž›αŸƒ (αžαŸ’αž›αŸƒ) αŸ”

Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž…αžΌαžšαž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž—αŸ„αž‡αž“αžΈαž™αžŠαŸ’αž‹αžΆαž“αž“αžΈαž˜αž½αž™αŸ—αž“αžΌαžœαž›αŸαžαž›αŸ†αžŠαžΆαž”αŸ‹αžŠαŸ‚αž›αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž–αžΈ 0 αž αžΎαž™αž”αŸ‚αž„αž…αŸ‚αž€αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ 6 bitmap (αž˜αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž›αž€αŸ’αžαžŽαŸˆαž“αžΈαž˜αž½αž™αŸ—)αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹β€‹αž˜αž€ αž™αžΎαž„β€‹αž“αžΉαž„β€‹αž”αž‰αŸ’αž…αžΌαž›β€‹αž•αŸ‚αž“αž‘αžΈβ€‹αž”αŸŠαžΈαžβ€‹αž‘αžΆαŸ†αž„αž“αŸαŸ‡ αž’αžΆαžŸαŸ’αžšαŸαž™β€‹αž›αžΎβ€‹αžαžΆαžαžΎβ€‹αž—αŸ„αž‡αž“αžΈαž™αžŠαŸ’αž‹αžΆαž“β€‹αž˜αžΆαž“β€‹αž‘αŸ’αžšαž–αŸ’αž™αžŸαž˜αŸ’αž”αžαŸ’αžαž·β€‹αž“αŸαŸ‡β€‹αž¬β€‹αž’αžαŸ‹αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž—αŸ„αž‡αž“αžΈαž™αžŠαŸ’αž‹αžΆαž“ 4 αž˜αžΆαž“ veranda αž“αŸ„αŸ‡αž›αŸαž 4 αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ‚αž“αž‘αžΈ "αž˜αžΆαž“ veranda" αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž‘αŸ… 1 (αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αž·αž“αž˜αžΆαž“ veranda αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž‘αŸ… 0) αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αž˜αžΆαž“αž›αž·αž”αž·αž€αŸ’αžšαž˜αžšαžΌαž”αž—αžΆαž–αžŸαžΆαž˜αž‰αŸ’αž‰αž”αŸ†αž•αž»αžαžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“ αž αžΎαž™αž™αžΎαž„αž’αžΆαž…αž”αŸ’αžšαžΎαžœαžΆαžŠαžΎαž˜αŸ’αž”αžΈαž†αŸ’αž›αžΎαž™αžŸαŸ†αžŽαž½αžšαžŠαžΌαž…αž‡αžΆαŸ–

  • β€œαž”αž„αŸ’αž αžΆαž‰αžαŸ’αž‰αž»αŸ†αž“αžΌαžœαž—αŸ„αž‡αž“αžΈαž™αžŠαŸ’αž‹αžΆαž“αžŠαŸ‚αž›αžŸαŸαž€αŸ’αžαž·αžŸαž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž½αžŸβ€;
  • "αž”αž„αŸ’αž αžΆαž‰αžαŸ’αž‰αž»αŸ†αž“αžΌαžœαž—αŸ„αž‡αž“αžΈαž™αžŠαŸ’αž‹αžΆαž“αžŠαŸ‚αž›αž˜αžΆαž“αžαŸ†αž›αŸƒαžαŸ„αž€αž‡αžΆαž˜αž½αž™ veranda αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αž€αž€αŸ‹αžαž»αž”αžΆαž“αŸ”"

Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž™αŸ‰αžΆαž„αž˜αŸ‰αŸαž…? αžαŸ„αŸ‡αž˜αžΎαž›αŸ” αžŸαŸ†αžŽαžΎαžŠαŸ†αž”αžΌαž„αž‚αžΊαžŸαžΆαž˜αž‰αŸ’αž‰αžŽαžΆαžŸαŸ‹αŸ” αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž›β€‹αž™αžΎαž„β€‹αžαŸ’αžšαžΌαžœβ€‹αž’αŸ’αžœαžΎβ€‹αž‚αžΊβ€‹αž™αž€β€‹αž•αŸ‚αž“αž‘αžΈ "αž’αŸ’αž“αž€β€‹αž”αž½αžŸβ€‹αž‡αžΆβ€‹αž˜αž·αžαŸ’αž" αž αžΎαž™β€‹αž”αŸ’αžšαŸ‚αž€αŸ’αž›αžΆαž™β€‹αžœαžΆβ€‹αž‘αŸ…β€‹αž‡αžΆβ€‹αž”αž‰αŸ’αž‡αžΈβ€‹αž—αŸ„αž‡αž“αžΈαž™αžŠαŸ’αž‹αžΆαž“β€‹αžŠαŸ‚αž›β€‹αž”αŸŠαžΈαžβ€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž›αžΆαžαžαŸ’αžšαžŠαžΆαž„αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αžŸαŸ†αžŽαžΎαž‘αžΈαž–αžΈαžšαž‚αžΊαžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž”αž“αŸ’αžαž·αž…αŸ” αž™αžΎαž„αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΎ NOT bitmap αž“αŸ…αž›αžΎαž•αŸ‚αž“αž‘αžΈ "αžαŸ’αž›αŸƒ" αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΈαž—αŸ„αž‡αž“αžΈαž™αžŠαŸ’αž‹αžΆαž“αžŠαŸ‚αž›αž˜αžΆαž“αžαŸ†αž›αŸƒαžαŸ„αž€ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž“αž·αž„αžœαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„ "αžαžΎαžαŸ’αž‰αž»αŸ†αž’αžΆαž…αž€αž€αŸ‹αžαž»αž”αžΆαž“" αž“αž·αž„αž›αž‘αŸ’αž’αž•αž›αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž•αŸ‚αž“αž‘αžΈ "αž˜αžΆαž“ veranda" αŸ” αž•αŸ‚αž“αž‘αžΈβ€‹αž”αŸŠαžΈαžβ€‹αž›αž‘αŸ’αž’αž•αž›β€‹αž“αžΉαž„β€‹αž˜αžΆαž“β€‹αž”αž‰αŸ’αž‡αžΈβ€‹αž‚αŸ’αžšαžΉαŸ‡αžŸαŸ’αžαžΆαž“β€‹αžŠαŸ‚αž›β€‹αž”αŸ†αž–αŸαž‰β€‹αžαžΆαž˜β€‹αž›αž€αŸ’αžαžŽαŸˆβ€‹αžœαž·αž“αž·αž…αŸ’αž†αŸαž™β€‹αžšαž”αžŸαŸ‹β€‹αž™αžΎαž„β€‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαž“αŸαŸ‡ αž“αŸαŸ‡αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆαž—αŸ„αž‡αž“αžΈαž™αžŠαŸ’αž‹αžΆαž“ Yunost αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž˜αžΆαž“αž‘αŸ’αžšαžΉαžŸαŸ’αžαžΈαž‡αžΆαž…αŸ’αžšαžΎαž“αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αž»αŸ†αž”αžΆαžšαž˜αŸ’αž— αž™αžΎαž„αž“αžΉαž„αžƒαžΎαž‰αž€αžΌαžŠαž€αŸ’αž“αž»αž„αž–αŸαž›αž†αžΆαž”αŸ‹αŸ—αž“αŸαŸ‡αŸ”

αžαžΎαžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαžαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž―αžŽαžΆ?

Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž’αŸ’αžœαžΎαž›αž·αž”αž·αž€αŸ’αžšαž˜ Google bitmap αž“αŸ„αŸ‡ 90% αž“αŸƒαž…αž˜αŸ’αž›αžΎαž™αž“αžΉαž„αž‘αžΆαž€αŸ‹αž‘αž„αž‘αŸ…αž“αžΉαž„ Oracle DB αžαžΆαž˜αž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αž˜αž½αž™αž¬αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚ DBMSs αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž‚αžΆαŸ†αž‘αŸ’αžšαžšαžΏαž„αžαŸ’αžšαž‡αžΆαž€αŸ‹αž”αŸ‚αž”αž“αŸαŸ‡αž˜αŸ‚αž“αž‘αŸ? αž˜αž·αž“β€‹αž”αŸ’αžšαžΆαž€αžŠβ€‹αž‘αŸαŸ”

αž…αžΌαžšαž™αžΎαž„αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž”αž‰αŸ’αž‡αžΈαž‡αž“αžŸαž„αŸ’αžŸαŸαž™αžŸαŸ†αžαžΆαž“αŸ‹αŸ—αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
MySQL αž˜αž·αž“β€‹αž‘αžΆαž“αŸ‹β€‹αž‚αžΆαŸ†αž‘αŸ’αžšβ€‹αž›αž·αž”αž·αž€αŸ’αžšαž˜β€‹αž•αŸ‚αž“αž‘αžΈβ€‹αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž˜αžΆαž“β€‹αžŸαŸ†αžŽαžΎβ€‹αžŸαŸ’αž“αžΎβ€‹αž”αž“αŸ’αžαŸ‚αž˜β€‹αž‡αž˜αŸ’αžšαžΎαžŸβ€‹αž“αŸαŸ‡ (https://dev.mysql.com/worklog/task/?id=1524).

PostgreSQL αž˜αž·αž“β€‹αž‚αžΆαŸ†αž‘αŸ’αžšβ€‹αž›αž·αž”αž·αž€αŸ’αžšαž˜β€‹αž•αŸ‚αž“αž‘αžΈβ€‹αž”αŸŠαžΈαžβ€‹αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž”αŸ’αžšαžΎβ€‹αž•αŸ‚αž“αž‘αžΈβ€‹αž”αŸŠαžΈαžβ€‹αžŸαžΆαž˜αž‰αŸ’αž‰ αž“αž·αž„β€‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšβ€‹αž”αŸŠαžΈαž αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž”αž‰αŸ’αž…αžΌαž›β€‹αž›αž‘αŸ’αž’αž•αž›β€‹αžŸαŸ’αžœαŸ‚αž„αžšαž€β€‹αžαžΆαž˜β€‹αž›αž·αž”αž·αž€αŸ’αžšαž˜β€‹αž•αŸ’αžŸαŸαž„β€‹αž‘αŸ€αžαŸ”

Tarantool αž˜αžΆαž“αž›αž·αž”αž·αž€αŸ’αžšαž˜ bitset αž“αž·αž„αž‚αžΆαŸ†αž‘αŸ’αžšαž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αžŸαžΆαž˜αž‰αŸ’αž‰αž“αŸ…αž›αžΎαž–αž½αž€αžœαžΆαŸ”

Redis αž˜αžΆαž“ bitfields αžŸαžΆαž˜αž‰αŸ’αž‰ (https://redis.io/commands/bitfield) αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αž–αž½αž€αž‚αŸαŸ”

MongoDB αž˜αž·αž“β€‹αž‘αžΆαž“αŸ‹β€‹αž‚αžΆαŸ†αž‘αŸ’αžšβ€‹αž›αž·αž”αž·αž€αŸ’αžšαž˜β€‹αž•αŸ‚αž“αž‘αžΈβ€‹αž”αŸŠαžΈαžβ€‹αž“αŸ…β€‹αž‘αžΎαž™β€‹αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž€αŸβ€‹αž˜αžΆαž“β€‹αžŸαŸ†αžŽαžΎβ€‹αžŠαŸ‚αž›β€‹αžŸαŸ’αž“αžΎβ€‹αžαžΆβ€‹αž‡αž˜αŸ’αžšαžΎαžŸβ€‹αž“αŸαŸ‡β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αž“αŸ’αžαŸ‚αž˜ https://jira.mongodb.org/browse/SERVER-1723

Elasticsearch αž”αŸ’αžšαžΎαž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαžαž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„ (https://www.elastic.co/blog/frame-of-reference-and-roaring-bitmap).

Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ

  • αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αž“αž€αž‡αž·αžαžαžΆαž„αžαŸ’αž˜αžΈαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαŸ’αž›αž½αž“αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž‘αŸ‡αžšαž”αžŸαŸ‹αž™αžΎαž„: Pilosa αŸ” αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αž˜αžΈαžŠαŸ‚αž›αž˜αž·αž“αž‘αžΆαž€αŸ‹αž‘αž„αž‚αŸ’αž“αžΆαžŠαŸ‚αž›αž”αžΆαž“αžŸαžšαžŸαŸαžšαž“αŸ…αž€αŸ’αž“αž»αž„ Go αŸ” αžœαžΆβ€‹αž˜αžΆαž“β€‹αžαŸ‚β€‹αž›αž·αž”αž·αž€αŸ’αžšαž˜β€‹αž•αŸ‚αž“αž‘αžΈβ€‹αž”αŸŠαžΈαžβ€‹αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ αž αžΎαž™β€‹αž•αŸ’αž’αŸ‚αž€β€‹αž›αžΎβ€‹αž’αŸ’αžœαžΈβ€‹αž‚αŸ’αžšαž”αŸ‹β€‹αž™αŸ‰αžΆαž„β€‹αž“αŸ…β€‹αž›αžΎβ€‹αž–αž½αž€αžœαžΆαŸ” αž™αžΎαž„αž“αžΉαž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαžœαžΆαž”αž“αŸ’αžαž·αž…αž€αŸ’αžšαŸ„αž™αž˜αž€αŸ”

αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž€αŸ’αž“αž»αž„ Go

αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž αŸαžαž»αž’αŸ’αžœαžΈβ€‹αž”αžΆαž“β€‹αž‡αžΆβ€‹αž›αž·αž”αž·αž€αŸ’αžšαž˜β€‹αž•αŸ‚αž“αž‘αžΈβ€‹αž”αŸŠαžΈαžβ€‹αž€αž˜αŸ’αžšβ€‹αž”αŸ’αžšαžΎβ€‹αž˜αŸ’αž›αŸ‰αŸαŸ‡? αž˜αž»αž“αž“αžΉαž„αž†αŸ’αž›αžΎαž™αžŸαŸ†αžŽαž½αžšαž“αŸαŸ‡ αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž”αž„αŸ’αž αžΆαž‰αž’αŸ’αž“αž€αž–αžΈαžšαž”αŸ€αž”αž’αž“αž»αžœαžαŸ’αžαž›αž·αž”αž·αž€αŸ’αžšαž˜αžšαžΌαž”αž—αžΆαž–αžŸαžΆαž˜αž‰αŸ’αž‰αž”αŸ†αž•αž»αžαž“αŸ…αž€αŸ’αž“αž»αž„ Go αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαžαž‚αžΊαž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆαž”αŸ†αžŽαŸ‚αž€αž“αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„ Go αžŸαžΌαž˜αž”αŸ’αžšαžΎαž”αŸŠαžΈαžαž…αŸ†αžŽαž·αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž“αŸαŸ‡αŸ”

αž™αžΎαž„β€‹αž˜αžΆαž“β€‹αž•αŸ‚αž“αž‘αžΈβ€‹αž”αŸŠαžΈαžβ€‹αž˜αž½αž™β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž›αž€αŸ’αžαžŽαŸˆβ€‹αž—αŸ„αž‡αž“αžΈαž™αžŠαŸ’αž‹αžΆαž“β€‹αž˜αž½αž™ αž αžΎαž™β€‹αž”αŸŠαžΈαžβ€‹αž“αžΈαž˜αž½αž™αŸ—β€‹αž€αŸ’αž“αž»αž„β€‹αž•αŸ‚αž“αž‘αžΈβ€‹αž”αŸŠαžΈαžβ€‹αž”αž„αŸ’αž αžΆαž‰β€‹αžαžΆβ€‹αžαžΎβ€‹αž—αŸ„αž‡αž“αžΈαž™αžŠαŸ’αž‹αžΆαž“β€‹αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹β€‹αž˜αžΆαž“β€‹αž‘αŸ’αžšαž–αŸ’αž™αžŸαž˜αŸ’αž”αžαŸ’αžαž·β€‹αž“αŸαŸ‡β€‹αž¬β€‹αž’αžαŸ‹αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž™αžΎαž„αž“αžΉαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž˜αž»αžαž„αžΆαžšαž‡αŸ†αž“αž½αž™αž–αžΈαžšαŸ” αž˜αž½αž™αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ†αž–αŸαž‰αžšαžΌαž”αž—αžΆαž–αž•αŸ‚αž“αž‘αžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αž…αŸƒαžŠαž“αŸ’αž™αŸ” αž…αŸƒαžŠαž“αŸ’αž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž”αŸ’αžšαžΌαž”αžΆαž”αŸŠαžΈαž›αžΈαžαŸαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αžŠαŸ‚αž›αž—αŸ„αž‡αž“αžΈαž™αžŠαŸ’αž‹αžΆαž“αž˜αžΆαž“αž‘αŸ’αžšαž–αŸ’αž™αžŸαž˜αŸ’αž”αžαŸ’αžαž·αž“αžΈαž˜αž½αž™αŸ—αŸ” αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αžαŸ’αž‰αž»αŸ†αž‡αžΏαžαžΆαž˜αžΆαž“αž—αŸ„αž‡αž“αžΈαž™αžŠαŸ’αž‹αžΆαž“αžαž·αž…αžαž½αž…αžŽαžΆαžŸαŸ‹αž“αŸ…αž‘αžΈαž€αŸ’αžšαž»αž„αž˜αžΌαžŸαŸ’αž‚αžΌ αžŠαŸ‚αž›αž’αŸ’αž“αž€αž˜αž·αž“αž’αžΆαž…αž€αž€αŸ‹αžαž»αž”αžΆαž“ αž αžΎαž™αžœαžΆαž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαžαŸ’αž‰αž»αŸ†αžαžΆαž”αŸ’αžšαž αŸ‚αž› 20% αž“αŸƒαž‚αŸ’αžšαžΉαŸ‡αžŸαŸ’αžαžΆαž“αž‚αžΊαžŸαž˜αžšαž˜αŸ’αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž”αž½αžŸαŸ”

αž˜αž»αžαž„αžΆαžšαž‘αžΈαž–αžΈαžšαž“αžΉαž„αž”αŸ†αž”αŸ’αž›αŸ‚αž„αžšαžΌαž”αž—αžΆαž–αž•αŸ‚αž“αž‘αžΈαž‘αŸ…αž‡αžΆαž”αž‰αŸ’αž‡αžΈαž—αŸ„αž‡αž“αžΈαž™αžŠαŸ’αž‹αžΆαž“αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αžŠαžΎαž˜αŸ’αž”αžΈαž†αŸ’αž›αžΎαž™αžŸαŸ†αžŽαž½αžš "αž”αž„αŸ’αž αžΆαž‰αžαŸ’αž‰αž»αŸ†αž“αžΌαžœαž—αŸ„αž‡αž“αžΈαž™αžŠαŸ’αž‹αžΆαž“αžŠαŸ‚αž›αž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαžαŸ„αž€αžŠαŸ‚αž›αž˜αžΆαž“αž‘αžΈαž’αŸ’αž›αžΆ αž“αž·αž„αž’αžΆαž…αž’αŸ’αžœαžΎαž€αžΆαžšαž€αž€αŸ‹αž‘αž»αž€αž”αžΆαž“" αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž”αŸŠαžΈαžαž–αžΈαžšαŸ– αž˜αž·αž“αž˜αŸ‚αž“ αž“αž·αž„ AND αŸ”

αž™αžΎαž„β€‹αž’αžΆαž…β€‹αžŸαž˜αŸ’αžšαž½αž›β€‹αž€αžΌαžŠβ€‹αžšαž”αžŸαŸ‹β€‹αž™αžΎαž„β€‹αž”αž“αŸ’αžαž·αž…β€‹αžŠαŸ„αž™β€‹αž”αŸ’αžšαžΎβ€‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšβ€‹αžŠαŸ‚αž›β€‹αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰β€‹αž‡αžΆαž„β€‹αž“αŸαŸ‡β€‹αž αžΎαž™β€‹αž˜αž·αž“β€‹αž”αŸ’αžšαžΎαŸ”

αž™αžΎαž„αž˜αžΆαž“αž˜αž»αžαž„αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αžΈαž˜αž½αž™αŸ—αŸ” αž–αž½αž€αž‚αŸαž‘αžΆαŸ†αž„αž–αžΈαžšαž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž…αŸ†αžŽαž·αžαž™αž€αž’αžΆαžαž»αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž–αžΈαž‚αŸ’αž“αžΆαž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž”αž“αŸ’αžαž·αž…αž αžΎαž™αžŠαžΆαž€αŸ‹αž›αž‘αŸ’αž’αž•αž›αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαž·αžαž›αž‘αŸ’αž’αž•αž›αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž αžΎαž™αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž™αžΎαž„αž’αžΆαž…αž”αŸ’αžšαžΎαž•αŸ‚αž“αž‘αžΈ αž“αž·αž„αž˜αž»αžαž„αžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„ αžŠαžΎαž˜αŸ’αž”αžΈαž†αŸ’αž›αžΎαž™αžŸαŸ†αžŽαž½αžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž‚αžΊαž˜αž·αž“αžαŸ’αž–αžŸαŸ‹αž“αŸ„αŸ‡αž‘αŸ αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž˜αž»αžαž„αžΆαžšαž‚αžΊαžŸαžΆαž˜αž‰αŸ’αž‰αžŽαžΆαžŸαŸ‹ αž αžΎαž™αž™αžΎαž„αžŸαž“αŸ’αžŸαŸ†αž”αŸ’αžšαžΆαž€αŸ‹αž”αžΆαž“αž…αŸ’αžšαžΎαž“αžŠαŸ„αž™αž€αžΆαžšαž˜αž·αž“αžαŸ’αžšαž›αž”αŸ‹αž˜αž€αžœαž·αž‰αž“αžΌαžœαž›αž‘αŸ’αž’αž•αž›αžαŸ’αž˜αžΈαžšαžΆαž›αŸ‹αž–αŸαž›αžŠαŸ‚αž›αž˜αž»αžαž„αžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž αŸ…αŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž’αŸ’αžœαžΎ profileing αž”αž“αŸ’αžαž·αž…αž‡αžΆαž˜αž½αž™ pprof αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžƒαžΎαž‰αžαžΆ Go compiler αž”αžΆαžαŸ‹αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αžŠαŸαžŸαžΆαž˜αž‰αŸ’αž‰ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαŸ†αžαžΆαž“αŸ‹αžαŸ’αž›αžΆαŸ†αž„αžŽαžΆαžŸαŸ‹αŸ– αž˜αž»αžαž„αžΆαžš inlining αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž€αžΆαžšαž–αž·αžαž‚αžΊαžαžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž„αž€αŸ’αžšαž„ Go αž˜αžΆαž“αž€αžΆαžšαž—αŸαž™αžαŸ’αž›αžΆαž…αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αž…αŸ†αž–αŸ„αŸ‡αžšαž„αŸ’αžœαž·αž›αž‡αž»αŸ†αžŠαŸ‚αž›αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž”αŸ†αžŽαŸ‚αž€ αž αžΎαž™αž”αžŠαž·αžŸαŸαž’αž™αŸ‰αžΆαž„αžŠαžΆαž…αŸ‹αž’αž αž„αŸ’αž€αžΆαžšαž…αŸ†αž–αŸ„αŸ‡αž˜αž»αžαž„αžΆαžšαž€αŸ’αž“αž»αž„αž‡αž½αžšαžŠαŸ‚αž›αž˜αžΆαž“αžšαž„αŸ’αžœαž·αž›αž‡αž»αŸ†αž”αŸ‚αž”αž“αŸαŸ‡αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αžαŸ’αž‰αž»αŸ†β€‹αž˜αž·αž“β€‹αžαŸ’αž›αžΆαž…β€‹αž‘αŸ αž αžΎαž™β€‹αžαŸ’αž‰αž»αŸ†β€‹αž’αžΆαž…β€‹αž”αŸ„αž€β€‹αž’αŸ’αž“αž€β€‹αž…αž„αž€αŸ’αžšαž„β€‹αž”αžΆαž“β€‹αžŠαŸ„αž™β€‹αž€αžΆαžšβ€‹αž”αŸ’αžšαžΎ goto αž‡αŸ†αž“αž½αžŸβ€‹αž±αŸ’αž™β€‹αž€αžΆαžšβ€‹αžšαž„αŸ’αžœαž·αž›αž‡αž»αŸ†β€‹αžŠαžΌαž…β€‹αž€αŸ’αž“αž»αž„β€‹αžαŸ’αž„αŸƒβ€‹αž›αŸ’αž’β€‹αŸ”

Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ

αž αžΎαž™αžŠαžΌαž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αžΆαž“αžƒαžΎαž‰ αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„αž“αžΉαž„αž”αŸ†αž–αŸαž‰αž˜αž»αžαž„αžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αžŠαŸ„αž™αžšαžΈαž€αžšαžΆαž™! αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αž™αžΎαž„αžŸαž“αŸ’αžŸαŸ†αž”αžΆαž“αž”αŸ’αžšαž αŸ‚αž› 2 αž˜αžΈαž€αŸ’αžšαžΌαžœαž·αž“αžΆαž‘αžΈαŸ” αž˜αž·αž“αž’αžΆαž€αŸ’αžšαž€αŸ‹β€‹αž‘αŸ!

Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ

αž€αžΆαžšαžŸαŸ’αž‘αŸ‡αž‘αžΈαž–αžΈαžšαž‚αžΊαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαž˜αžΎαž›αžαžΆαžαžΎαž’αŸ’αž“αž€αž˜αžΎαž›αž™αŸ‰αžΆαž„αžŠαž·αžαžŠαž›αŸ‹αž“αžΌαžœαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αŸ” αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž–αŸ’αžšαŸ†αžŠαŸ‚αž“αž•αŸ’αž“αŸ‚αž€αžαžΆαž„αžŸαŸ’αžŠαžΆαŸ†αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αžšαž„αŸ’αžœαž·αž›αž‡αž»αŸ†αž€αŸ’αžαŸ…αž”αŸ†αž•αž»αžαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” αž€αžΆαžšαž–αž·αžαž‚αžΊαžαžΆ Go αž‚αžΊαž‡αžΆαž—αžΆαžŸαžΆαžŠαŸ‚αž›αž˜αžΆαž“αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž– αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„αžαŸ’αž›αžΆαž…αžαžΆαž’αŸ†αžŽαŸ‡αž’αŸ†αžŽαžΆαž„αž”αžΈαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† (αž”αžΈαž”αŸ†αžŽαŸ‚αž€) αž˜αžΆαž“αž‘αŸ†αž αŸ†αžαž»αžŸαŸ—αž‚αŸ’αž“αžΆαŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž”αžΆαž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹, αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž“αžΉαž„αž˜αžΆαž“αž›αž‘αŸ’αž’αž—αžΆαž–αž‘αŸ’αžšαžΉαžŸαŸ’αžαžΈαž“αŸƒαž€αžΆαžšαž€αžΎαžαž‘αžΎαž„αž“αŸƒαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž‚αŸαž αŸ…αžαžΆ buffer overflow αŸ”

αžŸαžΌαž˜αž’αžΆαž“αžΆαžŠαž›αŸ‹αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„αž‘αžΎαž„αžœαž·αž‰αžŠαŸ„αž™αž”αž„αŸ’αž αžΆαž‰αžœαžΆαžαžΆαž…αŸ†αžŽαž·αžαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž˜αžΆαž“αž‘αŸ†αž αŸ†αžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ” αž™αžΎαž„αž’αžΆαž…αž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αž”αžΆαž“αžŠαŸ„αž™αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžŸαžΆαž˜αž‰αŸ’αž‰αž˜αž½αž™αž“αŸ…αžŠαžΎαž˜αž˜αž»αžαž„αžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αžŠαŸ„αž™αžƒαžΎαž‰αžŠαžΌαž…αž“αŸαŸ‡ αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„αžšαžΈαž€αžšαžΆαž™αž“αžΉαž„αžšαŸ†αž›αž„αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ αž αžΎαž™αž™αžΎαž„αžŸαž“αŸ’αžŸαŸ†αž”αžΆαž“ 500 αžŽαžΆαžŽαžΌαžœαž·αž“αžΆαž‘αžΈαž‘αŸ€αžαŸ”

αž…αž„αŸ’αžšαŸ’αž€αžΆαž“αž’αŸ†

αž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžŸαžΎαžšαžŽαžΆαžŸαŸ‹ αž™αžΎαž„αž”αžΆαž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž˜αž½αž™αž…αŸ†αž“αž½αž“αž…αŸαž‰αž–αžΈαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžŠαŸαžŸαžΆαž˜αž‰αŸ’αž‰αžšαž”αžŸαŸ‹αž™αžΎαž„ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž›αž‘αŸ’αž’αž•αž›αž“αŸαŸ‡αž–αž·αžαž‡αžΆαž’αžΆαž€αŸ’αžšαž€αŸ‹αž‡αžΆαž„αž›αž‘αŸ’αž’αž—αžΆαž–αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αž‡αžΆαž˜αž½αž™αž•αŸ’αž“αŸ‚αž€αžšαžΉαž„αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αŸ”

αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž›β€‹αž™αžΎαž„β€‹αž’αŸ’αžœαžΎβ€‹αž‚αžΊβ€‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšβ€‹αž”αŸŠαžΈαžβ€‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž αžΎαž™β€‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’β€‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšβ€‹αžšαž”αžŸαŸ‹β€‹αž™αžΎαž„β€‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšβ€‹αžœαžΆβ€‹αž™αŸ‰αžΆαž„β€‹αž˜αžΆαž“β€‹αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαž’αž€αž»αžŸαž› αž™αžΎαž„ "αž…αž·αž‰αŸ’αž…αžΉαž˜" αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž•αŸ’αž“αŸ‚αž€αžαžΌαž…αŸ—αž“αŸƒαž€αžΆαžšαž„αžΆαžšαŸ” αž˜αž»αžαž„αžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αž’αŸ’αžœαžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž›αžΎαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž”αŸƒαž”αŸƒαž”αŸƒαŸ” αž™αžΎαž„β€‹αž’αžΆαž…β€‹αž€αŸ‚αž”αŸ’αžšαŸ‚β€‹αž€αžΌαžŠβ€‹αžšαž”αžŸαŸ‹β€‹αž™αžΎαž„β€‹αž™αŸ‰αžΆαž„β€‹αž„αžΆαž™β€‹αžŸαŸ’αžšαž½αž›β€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž’αŸ’αžœαžΎβ€‹αž€αžΆαžšβ€‹αž‡αžΆαž˜αž½αž™β€‹αž€αŸ†αžŽαžΆαžαŸ‹ 8-byte αžŠαŸ„αž™β€‹αž”αŸ’αžšαžΎ UInt64 slices αŸ”

Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ

αžŠαžΌαž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰ αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαžΌαž…αž˜αž½αž™αž“αŸαŸ‡αž”αžΆαž“αž”αž„αŸ’αž€αžΎαž“αž›αŸ’αž”αžΏαž“αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αž”αŸ’αžšαžΆαŸ†αž”αžΈαžŠαž„αžŠαŸ„αž™αž”αž„αŸ’αž€αžΎαž“αž‘αŸ†αž αŸ†αž”αžΆαž…αŸ‹αž…αŸ†αž“αž½αž“αž”αŸ’αžšαžΆαŸ†αž”αžΈαžŠαž„αŸ” αž€αžΆαžšαž‘αž‘αž½αž›αž”αžΆαž“αž’αžΆαž…αž“αž·αž™αžΆαž™αž”αžΆαž“αžαžΆαž‡αžΆαž›αžΈαž“αŸαž’αŸŠαŸ‚αžšαŸ”

Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ

αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž€αŸ’αž“αž»αž„αž§αž”αž€αžšαžŽαŸαžŠαŸ†αž‘αžΎαž„

Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸαŸ‡αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž‘αžΈαž”αž‰αŸ’αž…αž”αŸ‹αž‘αŸαŸ” αž§αž”αž€αžšαžŽαŸαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αž’αžΆαž…αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž€αŸ†αžŽαžΆαžαŸ‹ 16, 32 αž“αž·αž„αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚ 64 αž”αŸƒαŸ” αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš "αž‘αžΌαž›αŸ†αž‘αžΌαž›αžΆαž™" αž”αŸ‚αž”αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆ single instruction multiple data (SIMD; one instruction, many data) αž αžΎαž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž€αžΆαžšαž”αŸ†αž”αŸ’αž›αŸ‚αž„αž€αžΌαžŠαžŠαžΌαž…αŸ’αž“αŸαŸ‡αžœαžΆαž”αŸ’αžšαžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž”αŸ‚αž”αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆ vectorization αŸ”

αž‡αžΆαž’αž€αž»αžŸαž› αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž„αž€αŸ’αžšαž„ Go αž‚αžΊαž“αŸ…αž†αŸ’αž„αžΆαž™αž–αžΈαž—αžΆαž–αž›αŸ’αž’αž₯αžαžαŸ’αž…αŸ„αŸ‡αž“αŸƒαžœαŸ‰αž·αž…αž‘αŸαžšαŸ” αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž“αŸαŸ‡ αž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αžŠαžΎαž˜αŸ’αž”αžΈ vectorize αž€αžΌαžŠ Go αž‚αžΊαžαŸ’αžšαžΌαžœαž™αž€ αž“αž·αž„αžŠαžΆαž€αŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž‘αžΆαŸ†αž„αž“αŸαŸ‡αžŠαŸ„αž™αžŠαŸƒαžŠαŸ„αž™αž”αŸ’αžšαžΎ Go assembler αŸ”

Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ

Go assembler αž‚αžΊαž‡αžΆαžŸαžαŸ’αžœαž…αž˜αŸ’αž›αŸ‚αž€αŸ” αž’αŸ’αž“αž€αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαžŠαžΉαž„αž αžΎαž™αžαžΆ αž—αžΆαžŸαžΆαž‡αž½αž”αž”αŸ’αžšαž‡αž»αŸ†αž‚αŸ’αž“αžΆ αž‚αžΊαž‡αžΆαž’αŸ’αžœαžΈαž˜αž½αž™αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αž‘αŸ…αž“αžΉαž„αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜αž“αŸƒαž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαžŠαŸ‚αž›αž’αŸ’αž“αž€αž€αŸ†αž–αž»αž„αžŸαžšαžŸαŸαžš αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ„αŸ‡αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž€αžšαžŽαžΈαž“αŸ…αž€αŸ’αž“αž»αž„ Go αž“αŸ„αŸ‡αž‘αŸαŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ†αž‘αžΎαž„ Go αž‚αžΊαžŠαžΌαž…αž‡αžΆ IRL (αž—αžΆαžŸαžΆαžαŸ†αžŽαžΆαž„αž€αž˜αŸ’αžšαž·αžαž˜αž’αŸ’αž™αž˜) αž¬αž—αžΆαžŸαžΆαž€αž˜αŸ’αžšαž·αžαž˜αž’αŸ’αž™αž˜αŸ– αžœαžΆαž‡αžΆαžœαŸαž‘αž·αž€αžΆαž―αž€αžšαžΆαž‡αŸ’αž™αŸ” Rob Pike αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž€αžΆαžšαžŸαž˜αŸ’αžαŸ‚αž„αžŠαŸαž’αžŸαŸ’αž…αžΆαžšαŸ’αž™ αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸ αž›αžΎαž”αŸ’αžšαž’αžΆαž“αž”αž‘αž“αŸαŸ‡αž€αžΆαž›αž–αžΈαž”αŸ‰αž»αž“αŸ’αž˜αžΆαž“αž†αŸ’αž“αžΆαŸ†αž˜αž»αž“αž“αŸ… GopherCon αž€αŸ’αž“αž»αž„αž‘αžΈαž€αŸ’αžšαž»αž„ Denver αŸ”

αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡ Go αž”αŸ’αžšαžΎαž‘αž˜αŸ’αžšαž„αŸ‹ Plan 9 αž˜αž·αž“αž’αž˜αŸ’αž˜αžαžΆ αžŠαŸ‚αž›αžαž»αžŸαž–αžΈαž‘αž˜αŸ’αžšαž„αŸ‹ AT&T αž“αž·αž„ Intel αžŠαŸ‚αž›αž‘αž‘αž½αž›αž™αž€αž‡αžΆαž‘αžΌαž‘αŸ…αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αžœαžΆαž˜αžΆαž“αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž“αž·αž™αžΆαž™αžαžΆαž€αžΆαžšαžŸαžšαžŸαŸαžš Go assembler αžŠαŸ„αž™αžŠαŸƒαž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž€αžΆαžšαžŸαž”αŸ’αž”αžΆαž™αž”αŸ†αž•αž»αžαž“αŸ„αŸ‡αž‘αŸαŸ”

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαžŸαŸ†αžŽαžΆαž„αž›αŸ’αž’ αž˜αžΆαž“αž§αž”αž€αžšαžŽαŸαž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹αž…αŸ†αž“αž½αž“αž–αžΈαžšαžŠαŸ‚αž›αž‡αž½αž™αž™αžΎαž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžšαžŸαŸαžš Go assembler: PeachPy αž“αž·αž„ avo αŸ” αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‘αžΆαŸ†αž„αž–αžΈαžšαž”αž„αŸ’αž€αžΎαž Go assembler αž–αžΈαž€αžΌαžŠαž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹αžŠαŸ‚αž›αžŸαžšαžŸαŸαžšαž€αŸ’αž“αž»αž„ Python αž“αž·αž„ Go αžšαŸ€αž„αž‚αŸ’αž“αžΆαŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‡αž½αž™αžŸαž˜αŸ’αžšαž½αž›αž’αŸ’αžœαžΈαŸ—αžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž€αžΆαžšαž”αŸ‚αž„αž…αŸ‚αž€ αž€αžΆαžšαžŸαžšαžŸαŸαžšαžšαž„αŸ’αžœαž·αž›αž‡αž»αŸ† αž“αž·αž„αž‡αžΆαž‘αžΌαž‘αŸ…αž’αŸ’αžœαžΎαž±αŸ’αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž€αžΆαžšαž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž–αž·αž—αž–αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αž½αž”αž”αŸ’αžšαž‡αž»αŸ†αž‚αŸ’αž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„ Go αŸ”

αž™αžΎαž„αž“αžΉαž„αž”αŸ’αžšαžΎ avo αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αž“αžΉαž„αž€αŸ’αž›αžΆαž™αž‡αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Go αž’αž˜αŸ’αž˜αžαžΆαŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž§αž‘αžΆαž αžšαžŽαŸαžŸαžΆαž˜αž‰αŸ’αž‰αž”αŸ†αž•αž»αžαž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ avo αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αŸ” αž™αžΎαž„β€‹αž˜αžΆαž“β€‹αž’αž“αž»αž‚αž˜αž“αŸ main() αžŠαŸ‚αž›β€‹αž€αŸ†αžŽαžαŸ‹β€‹αž€αŸ’αž“αž»αž„β€‹αžαŸ’αž›αž½αž“β€‹αžœαžΆβ€‹αž“αžΌαžœβ€‹αž˜αž»αžαž„αžΆαžš Add() αž’αžαŸ’αžαž“αŸαž™β€‹αž“αŸƒβ€‹αž€αžΆαžšβ€‹αž”αž“αŸ’αžαŸ‚αž˜β€‹αž›αŸαžβ€‹αž–αžΈαžšαŸ” αž˜αžΆαž“αž˜αž»αžαž„αžΆαžšαž‡αŸ†αž“αž½αž™αž“αŸ…αž‘αžΈαž“αŸαŸ‡ αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžαžΆαž˜αžˆαŸ’αž˜αŸ„αŸ‡ αž“αž·αž„αž‘αž‘αž½αž›αž”αžΆαž“αž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αž½αž™αžŠαŸ„αž™αž₯αžαž‚αž·αžαžαŸ’αž›αŸƒ αž“αž·αž„αžŸαž˜αžšαž˜αŸ’αž™αŸ” αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžšαž”αžŸαŸ‹αžαž½αžšαž€αŸ’αž”αžΆαž›αž“αžΈαž˜αž½αž™αŸ—αž˜αžΆαž“αž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž“αŸ…αž›αžΎ avo αžŠαžΌαž…αžŠαŸ‚αž›αž”αžΆαž“αžƒαžΎαž‰αž“αŸ…αž€αŸ’αž“αž»αž„ ADDQ αŸ” αž‘αžΈαž”αŸ†αž•αž»αžαž™αžΎαž„αžƒαžΎαž‰αž˜αž»αžαž„αžΆαžšαž‡αŸ†αž“αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžαž˜αŸ’αž›αŸƒαž›αž‘αŸ’αž’αž•αž›αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αžαžΆαž˜αžšαž™αŸˆαž€αžΆαžšαž αŸ…αž‘αŸ…αž”αž„αŸ’αž€αžΎαž αž™αžΎαž„αž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸ…αž›αžΎ avo αž αžΎαž™αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αž―αž€αžŸαžΆαžšαž–αžΈαžšαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαŸ–

  • add.s αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž›αŸαžαž€αžΌαžŠαž›αž‘αŸ’αž’αž•αž›αž“αŸ…αž€αŸ’αž“αž»αž„ Go assembler;
  • stub.go αž‡αžΆαž˜αž½αž™β€‹αž“αžΉαž„β€‹αž”αž‹αž˜αž€αžαžΆβ€‹αž˜αž»αžαž„αžΆαžšβ€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž—αŸ’αž‡αžΆαž”αŸ‹β€‹αž–αž·αž—αž–β€‹αž‘αžΆαŸ†αž„αž–αžΈαžšαŸ– αž‘αŸ… αž“αž·αž„β€‹αžŠαŸ†αž‘αžΎαž„αŸ”

Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αž”αžΆαž“αžƒαžΎαž‰αž“αžΌαžœαž’αŸ’αžœαžΈαžŠαŸ‚αž› avo αž’αŸ’αžœαžΎ αž“αž·αž„αžšαž”αŸ€αž” αžŸαžΌαž˜αž˜αžΎαž›αž˜αž»αžαž„αžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž‘αžΆαŸ†αž„αž€αŸ†αžŽαŸ‚ scalar αž“αž·αž„ vector (SIMD) αž“αŸƒαž˜αž»αžαž„αžΆαžšαŸ”

αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž€αŸ†αžŽαŸ‚αž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αž‡αžΆαž˜αž»αž“αžŸαž·αž“αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αžŠαžΌαž…αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαž˜αž»αž“ αž™αžΎαž„αž€αŸ†αž–αž»αž„αžŸαŸ’αž“αžΎαžŸαž»αŸ†αž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž‚αŸ„αž›αž”αŸ†αžŽαž„αž‘αžΌαž‘αŸ…αžŠαŸ„αž™αž₯αžαž‚αž·αžαžαŸ’αž›αŸƒ αž“αž·αž„αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž™αžΎαž„αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž‚αžŽαž“αžΆαž’αž»αž αŸ’αžœαžŸαž·αž αž“αž·αž„αž‘αŸ†αž αŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αž“αŸ„αŸ‡αž‘αŸαŸ” αž’αžΆαžœαŸ‰αžΌαž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαŸ—αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸαŸ‡αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž™αžΎαž„αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž™αžΎαž„αž’αŸ’αž›αžΆαž”αŸ‹αž”αŸ’αžšαžΎαžŸαŸ’αž›αžΆαž€ αž“αž·αž„ Goto (αž¬αž›αŸ„αž) αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ‚αž›αž˜αŸ’αž’αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž“αž·αž„αž”αž‰αŸ’αž†αŸ„αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Go compiler αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αž€αŸ†αž–αž»αž„αž’αŸ’αžœαžΎαžœαžΆαžαžΆαŸ†αž„αž–αžΈαžŠαŸ†αž”αžΌαž„αŸ” αž…αŸ†αžŽαž»αž…αž“αŸ„αŸ‡αž‚αžΊαžαžΆ αžœαžŠαŸ’αžαž‚αžΊαž‡αžΆαž‚αŸ†αž“αž·αžαž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‡αž½αž”αž”αŸ’αžšαž‡αž»αŸ†αž‚αŸ’αž“αžΆ αž™αžΎαž„αž˜αžΆαž“αžαŸ‚αžŸαŸ’αž›αžΆαž€αžŸαž‰αŸ’αž‰αžΆ αž“αž·αž„αž›αŸ„αžαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž›αŸαžαž€αžΌαžŠαžŠαŸ‚αž›αž“αŸ…αžŸαž›αŸ‹αž‚αž½αžšαžαŸ‚αž’αŸ’αž›αžΆαž”αŸ‹αžŸαŸ’αž‚αžΆαž›αŸ‹ αž“αž·αž„αž’αžΆαž…αž™αž›αŸ‹αž”αžΆαž“αŸ” αž™αžΎαž„αž’αŸ’αžœαžΎαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αžšαž„αŸ’αžœαž·αž›αž‡αž»αŸ†αž‡αžΆαž˜αž½αž™αžŸαŸ’αž›αžΆαž€ αž“αž·αž„αž›αŸ„αž αž™αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαžΌαž…αž˜αž½αž™αž–αžΈαž…αŸ†αžŽαž·αžαž–αžΈαžšαžšαž”αžŸαŸ‹αž™αžΎαž„ αž•αŸ’αžŸαŸ†αž–αž½αž€αžœαžΆαž‡αžΆαž˜αž½αž™αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž”αž“αŸ’αžαž·αž… (αž αžΎαž™αž˜αž·αž“αž˜αŸ‚αž“αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡) αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžŠαžΆαž€αŸ‹αž›αž‘αŸ’αž’αž•αž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαž·αžαž›αž‘αŸ’αž’αž•αž›αŸ” αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž“αŸαŸ‡αž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž›αŸαžαž€αžΌαžŠαžŠαŸ†αž‘αžΎαž„αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž˜αžΎαž›αž‘αŸ…αŸ” αž™αžΎαž„αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž‚αžŽαž“αžΆαž’αž»αž αŸ’αžœαžŸαž·αž αž“αž·αž„αž‘αŸ†αž αŸ† (αž”αž“αŸ’αž›αž·αž…αž‡αžΆαž–αžŽαŸŒαž”αŸƒαžαž„) αž¬αžαžΆαž˜αžŠαžΆαž“αž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ’αžšαžΎ (αž”αž“αŸ’αž›αž·αž…αž‡αžΆαž–αžŽαŸŒαž€αŸ’αžšαž αž˜)αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž—αžΆαžŸαžΆαž‡αž½αž”αž”αŸ’αžšαž‡αž»αŸ†αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž›αŸ’αž’αž”αŸ†αž•αž»αžαž“αŸ…αž€αŸ’αž“αž»αž„ Go αž™αžΎαž„αž“αžΉαž„αžƒαžΎαž‰αžαžΆαžœαžΆαžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ” αž αžΎαž™αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαŸ†αž–αžΉαž„αž‘αž»αž€αŸ” αž™αŸ‰αžΆαž„αžŽαžΆαž˜αž·αž‰ αž™αžΎαž„αž˜αž·αž“αž”αžΆαž“αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαž–αž·αžŸαŸαžŸαž“αŸ„αŸ‡αž‘αŸ αž™αžΎαž„αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž•αž›αž·αžαž‘αžΎαž„αžœαž·αž‰αž“αžΌαžœαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„ Go αž“αžΉαž„αž’αŸ’αžœαžΎαŸ”

αž‡αžΆαž’αž€αž»αžŸαž› αž™αžΎαž„αž˜αž·αž“αž’αžΆαž…αž”αž„αŸ’αžαŸ†αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„αž±αŸ’αž™αž”αž‰αŸ’αž…αžΌαž›αž˜αž»αžαž„αžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αžŠαŸ‚αž›αžŸαžšαžŸαŸαžšαž‡αžΆαž—αžΆαžŸαžΆαž‡αž½αž”αž”αŸ’αžšαž‡αž»αŸ†αž‚αŸ’αž“αžΆαž”αžΆαž“αž‘αŸαŸ” Go compiler αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž˜αž·αž“αž˜αžΆαž“αž˜αž»αžαž„αžΆαžšαž”αŸ‚αž”αž“αŸαŸ‡αž‘αŸ αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž˜αžΆαž“αž€αžΆαžšαžŸαŸ’αž“αžΎαžŸαž»αŸ†αž±αŸ’αž™αž”αž“αŸ’αžαŸ‚αž˜αžœαžΆαž˜αž½αž™αžšαž™αŸˆαž€αŸαžŠαŸ„αž™αŸ”

αž“αŸαŸ‡β€‹αž‡αžΆβ€‹αž˜αžΌαž›αž αŸαžαž»β€‹αžŠαŸ‚αž›β€‹αžœαžΆβ€‹αž˜αž·αž“β€‹αž’αžΆαž…β€‹αž‘αž‘αž½αž›β€‹αž”αžΆαž“β€‹αž’αžαŸ’αžαž”αŸ’αžšαž™αŸ„αž‡αž“αŸβ€‹αžŽαžΆαž˜αž½αž™β€‹αž–αžΈβ€‹αž˜αž»αžαž„αžΆαžšβ€‹αžαžΌαž…β€‹αŸ—β€‹αž€αŸ’αž“αž»αž„β€‹αž—αžΆαžŸαžΆβ€‹αžŠαŸ†αž‘αžΎαž„β€‹αž‘αŸαŸ” αž™αžΎαž„αžαŸ’αžšαžΌαžœαžŸαžšαžŸαŸαžšαž˜αž»αžαž„αžΆαžšαž’αŸ†αŸ— αž¬αž”αŸ’αžšαžΎαž€αž‰αŸ’αž…αž”αŸ‹αž‚αžŽαž·αžαžœαž·αž‘αŸ’αž™αžΆ/αž”αŸŠαžΈαžαžαŸ’αž˜αžΈ αž¬αžšαŸ†αž›αž„αž—αžΆαžŸαžΆαžŠαŸ†αž‘αžΎαž„αŸ”

αž₯αž‘αžΌαžœαž“αŸαŸ‡ αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž€αŸ†αžŽαŸ‚αžœαŸ‰αž·αž…αž‘αŸαžšαž“αŸƒαž˜αž»αžαž„αžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž§αž‘αžΆαž αžšαžŽαŸαž“αŸαŸ‡ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž”αŸ’αžšαžΎ AVX2 αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αž”αŸ’αžšαžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎαž€αŸ†αžŽαžΆαžαŸ‹ 32 αž”αŸƒαŸ” αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αž“αŸƒαž€αžΌαžŠαž‚αžΊαžŸαŸ’αžšαžŠαŸ€αž„αž‘αŸ…αž“αžΉαž„αž€αŸ†αžŽαŸ‚αž˜αžΆαžαŸ’αžšαžŠαŸ’αž‹αžΆαž“αŸ– αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš αžŸαŸ’αž“αžΎαžŸαž»αŸ†αž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αžŠαŸ„αž™αž₯αžαž‚αž·αžαžαŸ’αž›αŸƒαŸ”αž›αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž€αžΆαžšαž…αŸ’αž“αŸƒαž”αŸ’αžšαžŒαž·αžαž˜αž½αž™αž‚αžΊαžαžΆαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžœαŸ‰αž·αž…αž‘αŸαžšαž€αžΆαž“αŸ‹αžαŸ‚αž‘αžΌαž›αŸ†αž‘αžΌαž›αžΆαž™αž”αŸ’αžšαžΎαž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž’αŸ†αž‘αžΌαž›αžΆαž™αž–αž·αžŸαŸαžŸαŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸƒαž€αŸ†αžŽαžΆαžαŸ‹ 32-byte αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αžŠαŸ‚αž›αž”αž»αž–αŸ’αžœαž”αž‘αžŠαŸ„αž™ Y. αž“αŸαŸ‡αž‡αžΆαž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αž’αŸ’αž“αž€αžƒαžΎαž‰αž˜αž»αžαž„αžΆαžš YMM() αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžαŸ’αž‰αž»αŸ†αž€αŸ†αž–αž»αž„αž”αŸ’αžšαžΎ AVX-512 αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αŸ†αžŽαžΆαžαŸ‹ 64 αž”αŸŠαžΈαž αž“αŸ„αŸ‡αž”αž»αž–αŸ’αžœαž”αž‘αž“αžΉαž„αž‡αžΆ Z αŸ”

αž€αžΆαžšαž…αŸ’αž“αŸƒαž”αŸ’αžšαžŒαž·αžαž‘αžΈαž–αžΈαžšαž‚αžΊαžαžΆ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž”αŸ’αžšαžΎαž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž˜αž½αž™αž αŸ…αžαžΆ loop unrolling αžŠαŸ‚αž›αž˜αžΆαž“αž“αŸαž™αžαžΆαž’αŸ’αžœαžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžšαž„αŸ’αžœαž·αž›αž‡αž»αŸ†αž…αŸ†αž“αž½αž“αž”αŸ’αžšαžΆαŸ†αž”αžΈαžŠαŸ„αž™αžŠαŸƒ αž˜αž»αž“αž–αŸαž›αž›αŸ„αžαž‘αŸ…αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž“αŸƒαžšαž„αŸ’αžœαž·αž›αž‡αž»αŸ†αŸ” αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž“αŸαŸ‡αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž…αŸ†αž“αž½αž“αžŸαžΆαžαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠ αž αžΎαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžŠαŸ„αž™αž…αŸ†αž“αž½αž“αž“αŸƒαž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž₯αžαž‚αž·αžαžαŸ’αž›αŸƒαžŠαŸ‚αž›αž˜αžΆαž“αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž…αž»αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαžŸαž˜αŸ’αžαŸ‚αž„? αž“αžΆαž„β€‹αžŸαŸ’αž’αžΆαžβ€‹αžŽαžΆαžŸαŸ‹! αž™αžΎαž„αžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž›αŸ’αž”αžΏαž“αž”αŸ’αžšαž αŸ‚αž› XNUMX αžŠαž„αž’αŸ€αž”αž“αžΉαž„αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ Go αž›αŸ’αž’αž”αŸ†αž•αž»αžαŸ” αž‚αž½αžšαž’αŸ„αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž˜αŸ‚αž“αž‘αŸ?
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž“αŸαŸ‡αž€αŸαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž“αŸ’αž›αžΏαž“αžŠαŸ„αž™αž”αŸ’αžšαžΎ AVX-512, prefetching ឬ JIT (just-in-time compiler) αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αžŸαŸ†αžŽαž½αžšαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸαŸ‡αž–αž·αžαž‡αžΆαž”αŸ’αžšαž’αžΆαž“αž”αž‘αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž˜αž½αž™αŸ”

αž”αž‰αŸ’αž αžΆαž‡αžΆαž˜αž½αž™αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαž

αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž™αžΎαž„αž”αžΆαž“αž˜αžΎαž›αžšαž½αž…αž αžΎαž™αž“αžΌαžœαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžŠαŸαžŸαžΆαž˜αž‰αŸ’αž‰αž“αŸƒαž›αž·αž”αž·αž€αŸ’αžšαž˜αž•αŸ‚αž“αž‘αžΈαž€αŸ’αž“αž»αž„ Go αž“αž·αž„αž•αž›αž·αžαž•αž›αžŠαŸ‚αž›αž˜αžΆαž“αž•αž›αž·αžαž—αžΆαž–αž…αŸ’αžšαžΎαž“αž‡αžΆαž„αž˜αž»αž“αž“αŸ…αž€αŸ’αž“αž»αž„αž—αžΆαžŸαžΆαž‡αž½αž”αž”αŸ’αžšαž‡αž»αŸ†αž‚αŸ’αž“αžΆ αž‘αžΈαž”αŸ†αž•αž»αžαžŸαžΌαž˜αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αž›αž·αž”αž·αž€αŸ’αžšαž˜αž•αŸ‚αž“αž‘αžΈαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αž˜αŸ’αžšαžŽαžΆαžŸαŸ‹αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž―αž€αžŸαžΆαžšαž…αžΆαžŸαŸ‹αŸ—αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž”αž‰αŸ’αž αžΆαž”αžΈαž‡αžΆαž˜αž½αž™αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž•αŸ‚αž“αž‘αžΈ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž―αž€αžŸαžΆαžšαžαŸ’αž˜αžΈαž‡αžΆαž„αž“αŸαŸ‡ αž αžΎαž™αžαŸ’αž‰αž»αŸ†αž”αŸ’αžšαž€αŸ‚αž€αžαžΆαžœαžΆαž›αŸ‚αž„αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž‘αŸ€αžαž αžΎαž™αŸ” αž™αžΎαž„β€‹αž“αžΉαž„β€‹αž˜αž·αž“β€‹αž…αž»αŸ‡β€‹αž‡αŸ’αžšαŸ…β€‹αž€αŸ’αž“αž»αž„β€‹αž”αž‰αŸ’αž αžΆβ€‹αž“αžΈαž˜αž½αž™αŸ—β€‹αž“αŸ„αŸ‡β€‹αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž“αžΉαž„β€‹αž˜αžΎαž›β€‹αž‘αŸ…β€‹αž›αžΎβ€‹αž”αž‰αŸ’αž αžΆβ€‹αž‘αžΆαŸ†αž„β€‹αž“αŸ„αŸ‡β€‹αžŠαŸ„αž™β€‹αžŸαŸ’αžšαž–αž·αž…αžŸαŸ’αžšαž–αž·αž›αŸ”

αž”αž‰αŸ’αž αžΆαž“αŸƒ cardinality αžαŸ’αž–αžŸαŸ‹αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž™αžΎαž„β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž‚αŸβ€‹αž”αŸ’αžšαžΆαž”αŸ‹β€‹αžαžΆβ€‹αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸβ€‹αž•αŸ‚αž“αž‘αžΈβ€‹αž”αŸŠαžΈαžβ€‹αž‚αžΊβ€‹αžŸαž˜αžšαž˜αŸ’αž™β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αžαŸ‚β€‹αžœαžΆαž›β€‹αžŠαŸ‚αž›β€‹αž˜αžΆαž“β€‹αž€αž˜αŸ’αžšαž·αžβ€‹αž‘αžΆαž”β€‹αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ αž–αŸ„αž›β€‹αž‚αžΊβ€‹αžαž˜αŸ’αž›αŸƒβ€‹αžαž·αž…β€‹αžαž½αž… (αž§αž‘αžΆαž αžšαžŽαŸ αž—αŸαž‘ αž¬β€‹αž–αžŽαŸŒβ€‹αž—αŸ’αž“αŸ‚αž€) αž αžΎαž™β€‹αž˜αžΌαž›αž αŸαžαž»β€‹αž‚αžΊβ€‹αžαŸ†αžŽαžΆαž„β€‹αž’αž˜αŸ’αž˜αžαžΆβ€‹αž“αŸƒβ€‹αžœαžΆαž›β€‹αž”αŸ‚αž”β€‹αž“αŸαŸ‡ (αž˜αž½αž™ αž”αŸŠαžΈαžαž€αŸ’αž“αž»αž„αž˜αž½αž™αžαž˜αŸ’αž›αŸƒ) αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸƒ cardinality αžαŸ’αž–αžŸαŸ‹ αžœαžΆαž“αžΉαž„αž™αž€αž€αž“αŸ’αž›αŸ‚αž„αž‘αŸ†αž“αŸαžšαž…αŸ’αžšαžΎαž“αž–αŸαž€ αž αžΎαž™αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ…αž‘αŸ€αž αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸ bitmap αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ†αž–αŸαž‰αž™αŸ‰αžΆαž„αž›αŸ†αž”αžΆαž€ (αž€αž˜αŸ’αžšαžŽαžΆαžŸαŸ‹) αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž–αŸαž›αžαŸ’αž›αŸ‡αž™αžΎαž„αž’αžΆαž…αž”αŸ’αžšαžΎαžαŸ†αžŽαžΆαž„αž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆ αžŠαžΌαž…αž‡αžΆαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαžŠαŸ‚αž›αž™αžΎαž„αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαžαŸ†αžŽαžΆαž„αž±αŸ’αž™αž›αŸαžαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž‚αžΊαž‡αžΆαž€αžΆαžšαž˜αž€αžŠαž›αŸ‹αž“αŸƒαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αžΆαžšαž”αž„αŸ’αž αžΆαž”αŸ‹αžŠαŸ‚αž›αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αŸ” αž€αŸ’αž“αž»αž„αžšαž™αŸˆαž–αŸαž›αž”αŸ‰αž»αž“αŸ’αž˜αžΆαž“αž‘αžŸαžœαžαŸ’αžŸαžšαŸαž€αž“αŸ’αž›αž„αž˜αž€αž“αŸαŸ‡ αž’αŸ’αž“αž€αžœαž·αž‘αŸ’αž™αžΆαžŸαžΆαžŸαŸ’αžαŸ’αžš αž“αž·αž„αž’αŸ’αž“αž€αžŸαŸ’αžšαžΆαžœαž‡αŸ’αžšαžΆαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž“αžΌαžœαž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αžΆαžšαž”αž„αŸ’αž αžΆαž”αŸ‹αž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαžαŸ” αž’αžαŸ’αžαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž…αž˜αŸ’αž”αž„αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž‚αžΊαžαžΆ αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž”αž„αŸ’αžšαž½αž˜αž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαž αžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αžœαžαŸ’αžαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž”αŸŠαžΈαžαž‘αŸ αž™αžΎαž„αž’αžΆαž…αž’αž“αž»αžœαžαŸ’αžαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž”αŸŠαžΈαžαžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž“αŸ…αž›αžΎαž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαžαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž αžΆαž”αŸ‹αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αžαŸ’αž˜αžΈαŸ—αž“αŸαŸ‡ αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž€αžΌαž“αž€αžΆαžαŸ‹αž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž›αŸαž…αž…αŸαž‰ αžŠαžΌαž…αž‡αžΆαž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαžαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αž‚αŸ’αžšαž αžΉαž˜αŸ” αž–αž½αž€αž‚αŸαž€αŸ’αž“αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΆαž›αž‚αŸ’αž“αžΆαž”αŸ’αžšαžΎαžαŸ†αžŽαžΆαž„αž”αžΈαž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαž - αž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαžαžαŸ’αž›αž½αž“αž―αž„ ធអរេ αž“αž·αž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž αŸ…αžαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αŸŠαžΈαž - αž“αž·αž„αžαž»αž›αŸ’αž™αž—αžΆαž–αžšαžœαžΆαž„αž–αž½αž€αžœαžΆαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž– αž“αž·αž„αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αŸ”

αž’αŸ’αž“αž€αž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αžšαž€αž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαžαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αž‚αŸ’αžšαž αžΉαž˜αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž–αŸαž‰αž“αž·αž™αž˜αž”αŸ†αž•αž»αžαŸ” αž˜αžΆαž“αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ†αžšαž½αž…αž αžΎαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαžŸαžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αžΆαž…αŸ’αžšαžΎαž“ αžšαž½αž˜αž‘αžΆαŸ†αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž…αŸ’αžšαžΎαž“αž‡αžΆαž„αž”αžΈαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Go αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž˜αž½αž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αž›αž’αžΆαž…αž‡αž½αž™αž™αžΎαž„αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‡αžΆαž˜αž½αž™αž“αžΉαž„ cardinality αžαŸ’αž–αžŸαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆ binning αŸ” αžŸαŸ’αžšαž˜αŸƒαžαžΆαž’αŸ’αž“αž€αž˜αžΆαž“αžœαžΆαž›αžŠαŸ‚αž›αžαŸ†αžŽαžΆαž„αž±αŸ’αž™αž€αž˜αŸ’αž–αžŸαŸ‹αžšαž”αžŸαŸ‹αž˜αž“αž»αžŸαŸ’αžŸαŸ” αž€αž˜αŸ’αž–αžŸαŸ‹αž‚αžΊαž‡αžΆαž›αŸαžαž’αžŽαŸ’αžαŸ‚αžαž‘αžΉαž€ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž“αž»αžŸαŸ’αžŸαž™αžΎαž„αž˜αž·αž“αž‚αž·αžαž–αžΈαžœαžΆαž“αŸ„αŸ‡αž‘αŸαŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž™αžΎαž„αž˜αž·αž“αž˜αžΆαž“αž—αžΆαž–αžαž»αžŸαž”αŸ’αž›αŸ‚αž€αž‚αŸ’αž“αžΆαžšαžœαžΆαž„αž€αž˜αŸ’αž–αžŸαŸ‹ 185,2 αžŸαž„αŸ‹αž‘αžΈαž˜αŸ‰αŸ‚αžαŸ’αžš αž“αž·αž„ 185,3 αžŸαž„αŸ‹αž‘αžΈαž˜αŸ‰αŸ‚αžαŸ’αžšαž‘αŸαŸ”

αžœαžΆαž”αŸ’αžšαŸ‚αžαžΆαž™αžΎαž„αž’αžΆαž…αžŠαžΆαž€αŸ‹αžαž˜αŸ’αž›αŸƒαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž‘αŸ…αž‡αžΆαž€αŸ’αžšαž»αž˜αž€αŸ’αž“αž»αž„αžšαž„αŸ’αžœαž„αŸ‹ 1 αžŸαž„αŸ‹αž‘αžΈαž˜αŸ‰αŸ‚αžαŸ’αžšαŸ”

αž αžΎαž™αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αžŠαžΉαž„αžŠαŸ‚αžšαžαžΆαž˜αžΆαž“αž˜αž“αž»αžŸαŸ’αžŸαžαž·αž…αžŽαžΆαžŸαŸ‹αžŠαŸ‚αž›αžαŸ’αž›αžΈαž‡αžΆαž„ 50 αžŸαž„αŸ‹αž‘αžΈαž˜αŸ‰αŸ‚αžαŸ’αžš αž“αž·αž„αžαŸ’αž–αžŸαŸ‹αž‡αžΆαž„ 250 αžŸαž„αŸ‹αž‘αžΈαž˜αŸ‰αŸ‚αžαŸ’αžšαž“αŸ„αŸ‡ αž™αžΎαž„αž’αžΆαž…αž”αŸ’αžšαŸ‚αž€αŸ’αž›αžΆαž™αžœαžΆαž›αžŠαŸ‚αž›αž˜αžΆαž“αž’αž€αŸ’αžŸαžšαž€αžΆαžαŸ‹αž‚αŸ’αž˜αžΆαž“αžŠαŸ‚αž“αž€αŸ†αžŽαžαŸ‹αž‘αŸ…αž‡αžΆαžœαžΆαž›αž˜αž½αž™αžŠαŸ‚αž›αž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαž”αŸ’αžšαž αŸ‚αž› 200 αŸ”

αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž…αžΆαŸ†αž”αžΆαž…αŸ‹ αž™αžΎαž„αž’αžΆαž…αž’αŸ’αžœαžΎαž€αžΆαžšαžαŸ’αžšαž„αž”αž“αŸ’αžαŸ‚αž˜αž“αŸ…αž–αŸαž›αž€αŸ’αžšαŸ„αž™αŸ”

αž”αž‰αŸ’αž αžΆαž€αž˜αŸ’αžšαž·αžαž”αž‰αŸ’αž‡αžΌαž“αžαŸ’αž–αžŸαŸ‹αŸ”

αž”αž‰αŸ’αž αžΆαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž‡αžΆαž˜αž½αž™αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαžαž‚αžΊαžαžΆαž€αžΆαžšαž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž–αž½αž€αžœαžΆαž’αžΆαž…αž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαžαŸ’αž›αŸƒαžŽαžΆαžŸαŸ‹αŸ”

αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αžšαžΌαžœαžαŸ‚αž’αžΆαž…αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž‘αž·αž“αŸ’αž“αž“αŸαž™ αžαžŽαŸˆαžŠαŸ‚αž›αžŸαŸ†αžŽαž½αžšαžšαžΆαž”αŸ‹αžšαž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž€αŸ†αž–αž»αž„αžŸαŸ’αžœαŸ‚αž„αžšαž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ” αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž…αžΆαž€αŸ‹αžŸαŸ„ αžŠαžΎαž˜αŸ’αž”αžΈαž‡αŸ€αžŸαžœαžΆαž„αž”αž‰αŸ’αž αžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž‘αž·αž“αŸ’αž“αž“αŸαž™αž€αŸ’αž“αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΆαž›αž‚αŸ’αž“αžΆ αž¬αž”αž‰αŸ’αž αžΆαž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αž αžΎαž™αž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ„αž’αŸ†αž˜αž½αž™ αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž˜αž½αž™ - αžŸαŸ„αžšαžˆαŸ’αž›αŸ„αŸ‡αž‚αŸ’αž“αžΆ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžŸαŸ„αžšαž“αŸαŸ‡αž€αŸ’αž›αžΆαž™αž‡αžΆαž§αž”αžŸαž‚αŸ’αž‚αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž”αž‰αŸ’αž αžΆβ€‹αž“αŸαŸ‡β€‹αž’αžΆαž…β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™β€‹αž¬β€‹αž‡αŸ€αžŸβ€‹αžœαžΆαž„β€‹αžŠαŸ„αž™β€‹αž€αžΆαžšβ€‹αž”αŸ’αžšαžΎβ€‹αž€αžΆαžšβ€‹αž”αŸ†αž”αŸ‚αž€ αž¬β€‹αž”αŸ’αžšαžΎβ€‹αž›αž·αž”αž·αž€αŸ’αžšαž˜β€‹αž€αŸ†αžŽαŸ‚αŸ”

Sharding αž‚αžΊαž‡αžΆαžšαžΏαž„αžŸαžΆαž˜αž‰αŸ’αž‰ αž“αž·αž„αž›αŸ’αž”αžΈαŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ†αž”αŸ‚αž€αž›αž·αž”αž·αž€αŸ’αžšαž˜αž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαž αžŠαžΌαž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αž…αž„αŸ‹αž”αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αžŸαŸ„αž’αŸ†αž˜αž½αž™ αž’αŸ’αž“αž€αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αžŸαŸ„αžαžΌαž…αŸ—αž‡αžΆαž…αŸ’αžšαžΎαž“ αž αžΎαž™αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž€αž˜αŸ’αž…αžΆαžαŸ‹αž€αžΆαžšαžˆαŸ’αž›αŸ„αŸ‡αž”αŸ’αžšαž€αŸ‚αž€αž‚αŸ’αž“αžΆαžŠαŸ„αž™αžŸαŸ„αŸ”

αžœαž·αž’αžΈαž‘αžΈαž–αžΈαžšαžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž‚αžΊαžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΎαž›αž·αž”αž·αž€αŸ’αžšαž˜αž€αŸ†αžŽαŸ‚αŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΆαž“αž…αŸ’αž”αžΆαž”αŸ‹αž…αž˜αŸ’αž›αž„αž˜αž½αž™αž“αŸƒαž›αž·αž”αž·αž€αŸ’αžšαž˜αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€ αž¬αž’αžΆαž“ αž“αž·αž„αž˜αž½αž™αž…αŸ’αž”αžΆαž”αŸ‹αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŸαžšαžŸαŸαžš αž¬αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αŸ” αž αžΎαž™αž˜αŸ’αžαž„αž€αŸ’αž“αž»αž„αž€αŸ†αž‘αž»αž„αž–αŸαž›αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™ (αž§αž‘αžΆαž αžšαžŽαŸ αžšαžΆαž›αŸ‹ 100 ms ឬ 500 ms) αž’αŸ’αž“αž€αžŸαŸ’αž‘αž½αž“αž–αž½αž€αžœαžΆ αž αžΎαž™αž”αŸ’αžαžΌαžšαž–αž½αž€αžœαžΆαŸ” αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αž‚αžΊαž’αžΆαž…αž’αž“αž»αžœαžαŸ’αžαž”αžΆαž“αžαŸ‚αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžŠαŸ‚αž›αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž’αžΆαž…αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαžŸαŸ’αžœαŸ‚αž„αžšαž€αž™αžΊαžαž”αž“αŸ’αžαž·αž…αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”

αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‘αžΆαŸ†αž„αž–αžΈαžšαž“αŸαŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΆαž›αž‚αŸ’αž“αžΆαŸ– αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΆαž“αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž€αŸ†αžŽαŸ‚αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ†αž”αŸ‚αž€αŸ”

αžŸαŸ†αžŽαž½αžšαžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž‡αžΆαž„

αž”αž‰αŸ’αž αžΆαž…αž»αž„αž€αŸ’αžšαŸ„αž™αž‡αžΆαž˜αž½αž™αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαžαž‚αžΊαžαžΆ αž™αžΎαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž”αŸ’αžšαžΆαž”αŸ‹αžαžΆαžœαžΆαž˜αž·αž“αžŸαž˜αž›αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž—αŸαž‘αžŸαŸ†αžŽαž½αžšαžŠαŸ‚αž›αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž‡αžΆαž„αž“αŸαŸ‡αž‘αŸ αžŠαžΌαž…αž‡αžΆαžŸαŸ†αžŽαž½αžšαžœαž·αžŸαžΆαž›αž—αžΆαž–αž‡αžΆαžŠαžΎαž˜αŸ”

αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž‚αž·αžαž’αŸ†αž–αžΈαžœαžΆ αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž”αŸŠαžΈαžαžŠαžΌαž…αž‡αžΆ AND, OR αž‡αžΆαžŠαžΎαž˜ αž‚αžΊαž˜αž·αž“αžŸαŸαž€αŸ’αžαž·αžŸαž˜αž”αŸ†αž•αž»αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ†αžŽαž½αžš "αž”αž„αŸ’αž αžΆαž‰αžαŸ’αž‰αž»αŸ†αž“αžΌαžœαžŸαžŽαŸ’αž‹αžΆαž‚αžΆαžšαž‡αžΆαž˜αž½αž™αž“αžΉαž„αžαž˜αŸ’αž›αŸƒαž”αž“αŸ’αž‘αž”αŸ‹αž–αžΈ 200 αž‘αŸ… 300 αžŠαž»αž›αŸ’αž›αžΆαžšαž€αŸ’αž“αž»αž„αž˜αž½αž™αž™αž”αŸ‹αŸ”"
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž†αŸ„αžαž›αŸ’αž„αž„αŸ‹ αž“αž·αž„αž‚αŸ’αž˜αžΆαž“αž”αŸ’αžšαžΆαž‡αŸ’αž‰αžΆαž“αžΉαž„αž‡αžΆαž€αžΆαžšαž‘αž‘αž½αž›αž™αž€αž›αž‘αŸ’αž’αž•αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαž˜αŸ’αž›αŸƒαž”αŸ’αžšαžΆαž€αŸ‹αžŠαž»αž›αŸ’αž›αžΆαžšαž“αžΈαž˜αž½αž™αŸ— αž αžΎαž™αž”αž‰αŸ’αž…αžΌαž›αžœαžΆαž‡αžΆαž˜αž½αž™αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš OR αž”αž“αŸ’αžαž·αž…αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž›αŸ’αž’αž‡αžΆαž„αž”αž“αŸ’αžαž·αž…αž‚αžΊαžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΎαž€αžΆαžšαžŠαžΆαž€αŸ‹αž‡αžΆαž€αŸ’αžšαž»αž˜αŸ” αž§αž‘αžΆαž αžšαžŽαŸαž€αŸ’αž“αž»αž„αž€αŸ’αžšαž»αž˜ 50 αžŠαž»αž›αŸ’αž›αžΆαžšαŸ” αž“αŸαŸ‡αž“αžΉαž„αž”αž„αŸ’αž€αžΎαž“αž›αŸ’αž”αžΏαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„ 50 αžŠαž„αŸ”

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αž‰αŸ’αž αžΆαž€αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αžŠαŸ„αž™αž”αŸ’αžšαžΎαž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‡αžΆαž–αž·αžŸαŸαžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž—αŸαž‘αžŸαŸ†αžŽαžΎαž“αŸαŸ‡αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαžœαž·αž‘αŸ’αž™αžΆαžŸαžΆαžŸαŸ’αžαŸ’αžš αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž αŸ…αžαžΆ αž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαžαžŠαŸ‚αž›αž”αžΆαž“αž’αŸŠαž·αž“αž€αžΌαžŠαž‡αž½αžšαŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαžαŸ†αžŽαžΆαž„αž“αŸαŸ‡ αž™αžΎαž„αž˜αž·αž“αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž€αŸ†αžŽαžαŸ‹αž˜αž½αž™αž”αŸŠαžΈαžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαž˜αŸ’αž›αŸƒαž˜αž½αž™αž…αŸ†αž“αž½αž“ (αž§αž‘αžΆαž αžšαžŽαŸ 200) αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αŸ†αžŽαžαŸ‹αžαž˜αŸ’αž›αŸƒαž“αŸαŸ‡ αž“αž·αž„αž’αŸ’αžœαžΈαŸ—αž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžαŸ’αž–αžŸαŸ‹αž‡αžΆαž„αž“αŸαŸ‡αŸ” 200 αž“αž·αž„αžαŸ’αž–αžŸαŸ‹αž‡αžΆαž„αž“αŸαŸ‡αŸ” αžŠαžΌαž…αž‚αŸ’αž“αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ 300: 300 αž“αž·αž„αžαŸ’αž–αžŸαŸ‹αž‡αžΆαž„αž“αŸαŸ‡αŸ” αž›β€‹αž›αŸ”

αžŠαŸ„αž™αž”αŸ’αžšαžΎαžαŸ†αžŽαžΆαž„αž“αŸαŸ‡ αž™αžΎαž„αž’αžΆαž…αž†αŸ’αž›αžΎαž™αžŸαŸ†αžŽαž½αžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αž”αŸ’αžšαž—αŸαž‘αž“αŸαŸ‡αžŠαŸ„αž™αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαžαŸ’αžšαžΉαž˜αžαŸ‚αž–αžΈαžšαžŠαž„αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αžŠαŸ†αž”αžΌαž„ αž™αžΎαž„αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΈαžŸαžŽαŸ’αž‹αžΆαž‚αžΆαžšαžŠαŸ‚αž›αž”αž“αŸ’αž‘αž”αŸ‹αž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαžαž·αž…αž‡αžΆαž„ ឬ 300 αžŠαž»αž›αŸ’αž›αžΆαžš αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž™αžΎαž„αž“αžΉαž„αžŠαž€αž…αŸαž‰αž–αžΈαžœαžΆ αžŠαŸ‚αž›αžαž˜αŸ’αž›αŸƒαž”αž“αŸ’αž‘αž”αŸ‹αžαž·αž…αž‡αžΆαž„ ឬ 199 αžŠαž»αž›αŸ’αž›αžΆαžšαŸ” αžšαž½αž…αžšαžΆαž›αŸ‹αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž’αŸ’αž“αž€β€‹αž“αžΉαž„β€‹αž—αŸ’αž‰αžΆαž€αŸ‹β€‹αž•αŸ’αž’αžΎαž› αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αžŸαžΌαž˜αŸ’αž”αžΈβ€‹αžαŸ‚β€‹αž—αžΌαž˜αž·αžŸαžΆαžŸαŸ’αžαŸ’αžšβ€‹αž€αŸβ€‹αž’αžΆαž…β€‹αž”αŸ’αžšαžΎβ€‹αž”αŸ’αžšαžΆαžŸαŸ‹β€‹αž›αž·αž”αž·αž€αŸ’αžšαž˜β€‹αž•αŸ‚αž“αž‘αžΈβ€‹αž”αŸŠαžΈαžαŸ” αž›αŸ’αž”αž·αž…αž‚αžΊαž”αŸ’αžšαžΎαžαŸ†αžŽαžΆαž„αž’αžšαžŽαžΈαž˜αžΆαžαŸ’αžšαžŠαŸ‚αž›αž–αŸαž‘αŸ’αž’αž‡αž»αŸ†αžœαž·αž‰αž€αžΌαž’αžšαžŠαŸ„αž“αŸαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžαž½αž›αŸαžαž’αžšαžŽαžΈαž˜αžΆαžαŸ’αžšαŸ” αž§αž‘αžΆαž αžšαžŽαŸ S2 αž–αžΈ Google αŸ” αžαž½αžšαž›αŸαžαž‚αž½αžšαžαŸ‚αž’αžΆαž…αžαŸ†αžŽαžΆαž„αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž‡αžΆαž”αž“αŸ’αž‘αžΆαžαŸ‹αž”αŸ’αžšαžŸαž–αŸ’αžœαž”αžΈ αž¬αž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž’αžΆαž…αžŠαžΆαž€αŸ‹αž›αŸαžαž”αžΆαž“αŸ” αžœαž·αž’αžΈαž“αŸαŸ‡αž™αžΎαž„αž’αžΆαž…αž”αž„αŸ’αžœαŸ‚αžšαž—αžΌαž˜αž·αžŸαžΆαžŸαŸ’αžαŸ’αžšαžšαž”αžŸαŸ‹αž™αžΎαž„αž‘αŸ…αž‡αžΆαžŸαŸ†αžŽαž½αžšαž‡αžΆαž…αŸ’αžšαžΎαž“ β€œαžαžΆαž˜αž…αž“αŸ’αž›αŸ„αŸ‡β€ (αžαžΆαž˜αž”αž“αŸ’αž‘αžΆαžαŸ‹αž›αŸαžαž‘αžΆαŸ†αž„αž“αŸαŸ‡)αŸ”

αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžšαž½αž…αžšαžΆαž›αŸ‹

αžαŸ’αž‰αž»αŸ†αžŸαž„αŸ’αžƒαžΉαž˜αžαžΆαžαŸ’αž‰αž»αŸ†αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž’αŸ’αž“αž€αž”αž“αŸ’αžαž·αž… αž αžΎαž™αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ’αž“αž€αž˜αžΆαž“αž§αž”αž€αžšαžŽαŸαž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž˜αž½αž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αž’αžΆαžœαž»αž’αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ” αž”αžΎβ€‹αž’αŸ’αž“αž€β€‹αž’αŸ’αž›αžΆαž”αŸ‹β€‹αžαŸ’αžšαžΌαžœβ€‹αž’αŸ’αžœαžΎβ€‹αžšαžΏαž„β€‹αž”αŸ‚αž”β€‹αž“αŸαŸ‡ αž’αŸ’αž“αž€β€‹αž“αžΉαž„β€‹αžŠαžΉαž„β€‹αžαžΆβ€‹αžαŸ’αžšαžΌαžœβ€‹αž˜αžΎαž›β€‹αžœαž·αž’αžΈβ€‹αžŽαžΆαŸ”

αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž˜αž·αž“αž˜αŸ‚αž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αž“αžΆαžŸαž»αž‘αŸ’αž’αžαŸ‚αž˜αžΆαž“αž–αŸαž›αžœαŸαž›αžΆ αž—αžΆαž–αž’αžαŸ‹αž’αŸ’αž˜αžαŸ‹ αž¬αž’αž“αž’αžΆαž“αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž›αž·αž”αž·αž€αŸ’αžšαž˜αžšαžΌαž”αž—αžΆαž–αž–αžΈαžŠαŸ†αž”αžΌαž„αž‘αžΎαž™αŸ” αž‡αžΆβ€‹αž–αž·αžŸαŸαžŸβ€‹αž€αžΆαžšβ€‹αž”αŸ’αžšαžΎβ€‹αžŸαŸŠαžΈαž˜αžŒαžΈ αž‡αžΆβ€‹αž§αž‘αžΆαž αžšαžŽαŸ

αž‡αžΆαžŸαŸ†αžŽαžΆαž„αž›αŸ’αž’ αž˜αžΆαž“αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ‚αž›αžαŸ’αžšαŸ€αž˜αžšαž½αž…αž‡αžΆαžŸαŸ’αžšαŸαž…αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαžΎαž˜αŸ’αž”αžΈαž‡αž½αž™αž’αŸ’αž“αž€αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ

αž•αŸ‚αž“αž‘αžΈβ€‹αžŠαŸ‚αž›β€‹αž€αŸ†αž–αž»αž„β€‹αž‚αŸ’αžšαž αžΉαž˜

αž‘αžΈαž˜αž½αž™ αž˜αžΆαž“αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž”αŸŠαžΈαžαž•αŸ‚αž“αž‘αžΈαžŠαŸ‚αž›αž‚αŸ’αžšαž αžΉαž˜αžŠαžΌαž…αž‚αŸ’αž“αžΆ αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž“αž·αž™αžΆαž™αžšαž½αž…αž αžΎαž™αŸ” αžœαžΆαž˜αžΆαž“αž€αž»αž„αžαžΊαž“αŸαžšαž…αžΆαŸ†αž”αžΆαž…αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž“αž·αž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž”αŸŠαžΈαž αžŠαŸ‚αž›αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαž›αž·αž”αž·αž€αŸ’αžšαž˜αž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαžαž–αŸαž‰αž›αŸαž‰αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž‡αžΆαž’αž€αž»αžŸαž› αž“αŸ…αž–αŸαž›αž“αŸαŸ‡ αž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž Go αžŽαžΆαž˜αž½αž™αž”αŸ’αžšαžΎ SIMD αžŠαŸ‚αž›αž˜αžΆαž“αž“αŸαž™αžαžΆαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž Go αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αžαž·αž…αž‡αžΆαž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž C αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαŸ”

αž—αžΈαž‘αžΌαžŸαžΆ

αž•αž›αž·αžαž•αž›αž˜αž½αž™αž‘αŸ€αžαžŠαŸ‚αž›αž’αžΆαž…αž‡αž½αž™αž’αŸ’αž“αž€αž”αžΆαž“αž‚αžΊ Pilosa DBMS αžŠαŸ‚αž›αžαžΆαž˜αž–αž·αžαž˜αžΆαž“αžαŸ‚αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαžαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž“αŸαŸ‡β€‹αž‡αžΆβ€‹αžŠαŸ†αžŽαŸ„αŸ‡β€‹αžŸαŸ’αžšαžΆαž™β€‹αžαŸ’αž˜αžΈβ€‹αž˜αž½αž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αžœαžΆβ€‹αžˆαŸ’αž“αŸ‡β€‹αž…αž·αžαŸ’αžβ€‹αž€αŸ’αž“αž»αž„β€‹αž›αŸ’αž”αžΏαž“β€‹αžŠαŸβ€‹αž’αžŸαŸ’αž…αžΆαžšαŸ’αž™αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
Pilosa αž”αŸ’αžšαžΎαž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαžαžŠαŸ‚αž›αž‚αŸ’αžšαž αžΉαž˜αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„ αž αžΎαž™αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž’αŸ’αž“αž€αž“αžΌαžœαžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž–αž½αž€αžœαžΆ αžŸαž˜αŸ’αžšαž½αž› αž“αž·αž„αž–αž“αŸ’αž™αž›αŸ‹αž’αŸ’αžœαžΈαŸ—αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž“αž·αž™αžΆαž™αžαžΆαž„αž›αžΎαŸ– αž€αžΆαžšαžŠαžΆαž€αŸ‹αž‡αžΆαž€αŸ’αžšαž»αž˜ αž•αŸ‚αž“αž‘αžΈαž”αŸŠαžΈαžαžŠαŸ‚αž›αž”αžΆαž“αž’αŸŠαž·αž“αž€αžΌαžŠαž‡αž½αžš αž‚αŸ†αž“αž·αžαž“αŸƒαžœαžΆαž›αŸ”αž›αŸ”

αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ Pilosa αžŠαžΎαž˜αŸ’αž”αžΈαž†αŸ’αž›αžΎαž™αžŸαŸ†αžŽαž½αžšαžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αŸ’αž›αžΆαž”αŸ‹αžŸαŸ’αž‚αžΆαž›αŸ‹αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž§αž‘αžΆαž αžšαžŽαŸαž‚αžΊαžŸαŸ’αžšαžŠαŸ€αž„αž“αžΉαž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αžΆαž“αžƒαžΎαž‰αž–αžΈαž˜αž»αž“αŸ” αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαž‘αŸ…αž€αžΆαž“αŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ Pilosa αž”αž„αŸ’αž€αžΎαžαž›αž·αž”αž·αž€αŸ’αžšαž˜ αž“αž·αž„αžœαžΆαž›αž…αžΆαŸ†αž”αžΆαž…αŸ‹ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž”αŸ†αž–αŸαž‰αžœαžΆαž›αžšαž”αžŸαŸ‹αž™αžΎαž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αž…αŸƒαžŠαž“αŸ’αž™αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž”αŸ’αžšαžΌαž”αžΆαž”αŸŠαžΈαž›αžΈαžαŸ αž αžΎαž™αž‘αžΈαž”αŸ†αž•αž»αžαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžŸαŸ†αžŽαž½αžšαžŠαŸ‚αž›αž’αŸ’αž›αžΆαž”αŸ‹αžŸαŸ’αž‚αžΆαž›αŸ‹αŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸ„αŸ‡ αž™αžΎαž„αž”αŸ’αžšαžΎαž˜αž·αž“αž“αŸ…αž›αžΎαžœαžΆαž› "αžαŸ’αž›αŸƒ" αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž”αŸ’αžšαžŸαž–αŸ’αžœαž›αž‘αŸ’αž’αž•αž› (ឬ αž“αž·αž„αžœαžΆ) αž‡αžΆαž˜αž½αž™αžœαžΆαž› "αžšαžΆαž”αžŸαŸ’αž˜αžΎ" αž“αž·αž„αž‡αžΆαž˜αž½αž™αžœαžΆαž› "αž€αž€αŸ‹" αŸ” αž αžΎαž™αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“αž›αž‘αŸ’αž’αž•αž›αž…αž»αž„αž€αŸ’αžšαŸ„αž™αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αžαŸ’αž‰αž»αŸ†αž–αž·αžαž‡αžΆαžŸαž„αŸ’αžƒαžΉαž˜αžαžΆαž“αŸ…αž–αŸαž›αž’αž“αžΆαž‚αžαžŠαŸαžαŸ’αž›αžΈαžαžΆαž„αž˜αž»αž αžŸαž“αŸ’αž‘αžŸαŸ’αžŸαž“αŸαž”αŸ’αžšαž—αŸαž‘αžαŸ’αž˜αžΈαž“αŸαŸ‡αž€αŸαž“αžΉαž„αž”αž„αŸ’αž αžΆαž‰αž“αŸ…αž€αŸ’αž“αž»αž„ DBMSs αžŠαžΌαž…αž‡αžΆ MySQL αž“αž·αž„ PostgreSQL - bitmap indexes αŸ”
Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ

αžŸαŸαž…αž€αŸ’αžαžΈαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“

Bitmap indexes in Go: αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž–αŸ’αžšαŸƒ
αž”αžΎαž˜αž·αž“αž‘αžΆαž“αŸ‹αž”αžΆαž“αž‚αŸαž„αž‘αŸ αž’αžšαž‚αž»αžŽαŸ” αžαŸ’αž‰αž»αŸ†αžαŸ’αžšαžΌαžœαž“αž·αž™αžΆαž™αžαŸ’αž›αžΈαŸ—αž›αžΎαž”αŸ’αžšαž’αžΆαž“αž”αž‘αž‡αžΆαž…αŸ’αžšαžΎαž“ αžŠαŸ„αž™αžŸαžΆαžšαž–αŸαž›αžœαŸαž›αžΆαž˜αžΆαž“αž€αŸ†αžŽαžαŸ‹ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αž‰αž»αŸ†αžŸαž„αŸ’αžƒαžΉαž˜αžαžΆαž€αžΆαžšαž–αž·αž—αžΆαž€αŸ’αžŸαžΆαž“αŸαŸ‡αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸ αž αžΎαž™αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž›αžΎαž€αž‘αžΉαž€αž…αž·αžαŸ’αžαž•αž„αžŠαŸ‚αžšαŸ”

αž›αž·αž”αž·αž€αŸ’αžšαž˜ Bitmap αž‚αžΊαž›αŸ’αž’αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαžŠαžΉαž„ αž”αžΎαž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž’αŸ’αž“αž€αž˜αž·αž“αžαŸ’αžšαžΌαžœαž€αžΆαžšαžœαžΆαž₯αž‘αžΌαžœαž“αŸαŸ‡αž€αŸαžŠαŸ„αž™αŸ” αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž–αž½αž€αžœαžΆαž‡αžΆαž§αž”αž€αžšαžŽαŸαž˜αž½αž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž’αž”αŸ‹αž§αž”αž€αžšαžŽαŸαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

αž™αžΎαž„αž”αžΆαž“αž˜αžΎαž›αž›αŸ’αž”αž·αž…αž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž•αŸ’αžŸαŸαž„αŸ—αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Go αž“αž·αž„αž’αŸ’αžœαžΈαŸ—αžŠαŸ‚αž›αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„ Go αž˜αž·αž“αž‘αžΆαž“αŸ‹αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αžΆαž“αž›αŸ’αž’αž“αŸ…αž‘αžΎαž™αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž–αž·αžαž‡αžΆαž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Go αž‚αŸ’αžšαž”αŸ‹αžšαžΌαž”αžŠαžΎαž˜αŸ’αž”αžΈαžŠαžΉαž„αŸ”

αž“αŸ„αŸ‡αž αžΎαž™αž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž”αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αŸ” αžŸαžΌαž˜αž’αžšαž‚αž»αžŽ!

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹