Decoding billions of integers per second through vectorization

In many important applications—such as search engines and relational database systems—data are stored in the form of arrays of integers. Encoding and, most importantly, decoding of these arrays consumes considerable CPU time. Therefore, substantial effort has been made to reduce costs associated with compression and decompression. In particular, researchers have exploited the superscalar nature of modern processors and single‐instruction, multiple‐data (SIMD) instructions. Nevertheless, we introduce a novel vectorized scheme called SIMD‐BP128⋆ that improves over previously proposed vectorized approaches. It is nearly twice as fast as the previously fastest schemes on desktop processors (varint‐G8IU and PFOR). At the same time, SIMD‐BP128⋆ saves up to 2 bits/int. For even better compression, we propose another new vectorized scheme (SIMD‐FastPFOR) that has a compression ratio within 10% of a state‐of‐the‐art scheme (Simple‐8b) while being two times faster during decoding. © 2013 The Authors. Software: Practice and Experience Published by John Wiley & Sons, Ltd.

[1]  M. Żukowski,et al.  Balancing vectorized query execution with bandwidth-optimized storage , 2009 .

[2]  Ricardo A. Baeza-Yates,et al.  Experimental Analysis of a Fast Intersection Algorithm for Sorted Sequences , 2005, SPIRE.

[3]  Gang Wang,et al.  Efficient Parallel Lists Intersection and Index Compression Algorithms using Graphics Processing Units , 2011, Proc. VLDB Endow..

[4]  Jan O. Pedersen,et al.  Optimization for dynamic inverted index maintenance , 1989, SIGIR '90.

[5]  Ross N. Williams,et al.  An extremely fast Ziv-Lempel data compression algorithm , 1991, [1991] Proceedings. Data Compression Conference.

[6]  Meikel Pöss,et al.  Data Compression in Oracle , 2003, VLDB.

[7]  David J. DeWitt,et al.  How to barter bits for chronons: compression and bandwidth trade offs for database scans , 2007, SIGMOD '07.

[8]  Michail Vlachos,et al.  Net-Fli: On-the-fly Compression, Archiving and Indexing of Streaming Network Traffic , 2010, Proc. VLDB Endow..

[9]  Ian H. Witten,et al.  Managing gigabytes , 1994 .

[10]  Wolfgang Lehner,et al.  Fast integer compression using SIMD instructions , 2010, DaMoN '10.

[11]  Kenneth A. Ross,et al.  Implementing database operations using SIMD instructions , 2002, SIGMOD '02.

[12]  Alistair Moffat,et al.  Index compression using 64‐bit words , 2010, Softw. Pract. Exp..

[13]  Alexander A. Stepanov,et al.  SIMD-based decoding of posting lists , 2011, CIKM '11.

[14]  Jeffrey Dean,et al.  Challenges in building large-scale information retrieval systems: invited talk , 2009, WSDM '09.

[15]  Ian H. Witten,et al.  Managing Gigabytes: Compressing and Indexing Documents and Images , 1999 .

[16]  Svein Erik Bratsberg,et al.  Intra-query Concurrent Pipelined Processing for Distributed Full-Text Retrieval , 2012, ECIR.

[17]  Daniel Gayo-Avello,et al.  Stratified analysis of AOL query log , 2009, Inf. Sci..

[18]  Torsten Suel,et al.  Performance of compressed inverted list caching in search engines , 2008, WWW.

[19]  Fabrizio Silvestri,et al.  VSEncoding: efficient coding and fast decoding of integer lists via dynamic programming , 2010, CIKM.

[20]  Carsten Binnig,et al.  Dictionary-based order-preserving string compression for main memory column stores , 2009, SIGMOD Conference.

[21]  Ulrich Drepper,et al.  What Every Programmer Should Know About Memory , 2007 .

[22]  Owen Kaser,et al.  Reordering columns for smaller indexes , 2011, Inf. Sci..

[23]  Alistair Moffat,et al.  Inverted Index Compression Using Word-Aligned Binary Codes , 2004, Information Retrieval.

[24]  Daniel J. Abadi,et al.  Integrating compression and execution in column-oriented database systems , 2006, SIGMOD Conference.

[25]  David J. DeWitt,et al.  Read-optimized databases, in depth , 2008, Proc. VLDB Endow..

[26]  Giovanni Tummarello,et al.  Searching web data: An entity retrieval and high-performance indexing model , 2012, J. Web Semant..

[27]  Peter Sanders,et al.  Engineering basic algorithms of an in-memory text search engine , 2010, TOIS.

[28]  Jan Wassenberg Lossless asymmetric single instruction multiple data codec , 2012, Softw. Pract. Exp..

[29]  Sebastiano Vigna,et al.  Quasi-succinct indices , 2012, WSDM.

[30]  Jonathan Goldstein,et al.  Compressing relations and indexes , 1998, Proceedings 14th International Conference on Data Engineering.

[31]  Charles L. A. Clarke,et al.  Information Retrieval - Implementing and Evaluating Search Engines , 2010 .

[32]  Sven Helmer,et al.  The implementation and performance of compressed databases , 2000, SGMD.

[33]  Peter Elias,et al.  Universal codeword sets and representations of the integers , 1975, IEEE Trans. Inf. Theory.

[34]  R. Rice,et al.  Adaptive Variable-Length Coding for Efficient Compression of Spacecraft Television Data , 1971 .

[35]  Charles L. A. Clarke,et al.  Index compression is good, especially for random access , 2007, CIKM '07.

[36]  Marcin Zukowski,et al.  Super-Scalar RAM-CPU Cache Compression , 2006, 22nd International Conference on Data Engineering (ICDE'06).

[37]  Alexander Zeier,et al.  Speeding Up Queries in Column Stores - A Case for Compression , 2010, DaWak.

[38]  Alexander Hall,et al.  Processing a Trillion Cells per Mouse Click , 2012, Proc. VLDB Endow..

[39]  Hugh E. Williams,et al.  Compressing Integers for Fast File Access , 1999, Comput. J..

[40]  Ricardo Baeza-Yates,et al.  Modeling Static Caching in Web Search Engines , 2012, ECIR.

[41]  Ian H. Witten,et al.  Managing gigabytes (2nd ed.): compressing and indexing documents and images , 1999 .

[42]  Václav Snásel,et al.  Fast decoding algorithms for variable-lengths codes , 2012, Inf. Sci..

[43]  Nathalie Drach-Temam,et al.  Memory Bandwidth: The True Bottleneck of SIMD Multimedia Performance on a Superscalar Processor , 2001, Euro-Par.

[44]  Chinya V. Ravishankar,et al.  Block-Oriented Compression Techniques for Large Statistical Databases , 1997, IEEE Trans. Knowl. Data Eng..

[45]  Alistair Moffat,et al.  Binary Interpolative Coding for Effective Index Compression , 2000, Information Retrieval.

[46]  Garret Swart,et al.  How to wring a table dry: entropy compression of relations and querying of compressed relations , 2006, VLDB.

[47]  Wolfgang Lehner,et al.  Fast Sorted-Set Intersection using SIMD Instructions , 2011, ADMS@VLDB.

[48]  Bolin Ding,et al.  Fast Set Intersection in Memory , 2011, Proc. VLDB Endow..

[49]  Martin L. Kersten,et al.  Database Architecture Evolution: Mammals Flourished long before Dinosaurs became Extinct , 2009, Proc. VLDB Endow..

[50]  Johannes Gehrke,et al.  Inverted indexes vs. bitmap indexes in decision support systems , 2009, CIKM.

[51]  Larry H. Thiel,et al.  Program design for retrospective searches on large data bases , 1972, Inf. Storage Retr..

[52]  Torsten Suel,et al.  Inverted index compression and query processing with optimized document ordering , 2009, WWW '09.

[53]  Alexander Zeier,et al.  SIMD-Scan: Ultra Fast in-Memory Table Scan using on-Chip Vector Processing Units , 2009, Proc. VLDB Endow..

[54]  Toshio Nakatani,et al.  A high‐performance sorting algorithm for multicore single‐instruction multiple‐data processors , 2012, Softw. Pract. Exp..

[55]  Abdur Chowdhury,et al.  A picture of search , 2006, InfoScale '06.

[56]  Daniel J. Abadi,et al.  Performance tradeoffs in read-optimized databases , 2006, VLDB.

[57]  Norbert Zeh,et al.  Adaptive Tuple Differential Coding , 2007, DEXA.