Efficient and Flexible Information Retrieval Using MonetDB/X100 - PowerPoint PPT Presentation

1 / 35
About This Presentation
Title:

Efficient and Flexible Information Retrieval Using MonetDB/X100

Description:

Transparent, light-weight compression. Keyword Search. Inverted index: TD(termid, docid, score) ... score: Okapi - quantize - PFOR compress. Compressed Block Layout ... – PowerPoint PPT presentation

Number of Views:102
Avg rating:3.0/5.0
Slides: 36
Provided by: cwiu6
Category:

less

Transcript and Presenter's Notes

Title: Efficient and Flexible Information Retrieval Using MonetDB/X100


1
Efficient and Flexible Information Retrieval
Using MonetDB/X100
  • Sándor Héman
  • CWI, Amsterdam
  • Marcin Zukowski, Arjen de Vries, Peter Boncz
  • January 08, 2007

2
Background
  • Process query-intensive workloads over large
    datasets efficiently within a DBMS
  • Application Areas
  • Information Retrieval
  • Data mining
  • Scientific data analysis

3
MonetDB/X100 Highlights
  • Vectorized query engine
  • Transparent, light-weight compression

4
Keyword Search
  • Inverted index TD(termid, docid, score)
  • TopN(
  • Project(
  • MergeJoin(
  • RangeSelect( TD1TD, TD1.termid10 ),
  • RangeSelect( TD2TD, TD2.termid42 ),
  • TD1.docid TD2.docid),
  • docid TD1.docid,
  • score TD1.scoreQ TD2.scoreQ),
  • score DESC,
  • 20
  • )

5
Keyword Search
  • Inverted index TD(termid, docid, score)
  • TopN(
  • Project(
  • MergeJoin(
  • RangeSelect( TD1TD, TD1.termid10 ),
  • RangeSelect( TD2TD, TD2.termid42 ),
  • TD1.docid TD2.docid),
  • docid TD1.docid,
  • score TD1.scoreQ TD2.scoreQ),
  • score DESC,
  • 20
  • )

6
Keyword Search
  • Inverted index TD(termid, docid, score)
  • TopN(
  • Project(
  • MergeJoin(
  • RangeSelect( TD1TD, TD1.termid10 ),
  • RangeSelect( TD2TD, TD2.termid42 ),
  • TD1.docid TD2.docid),
  • docid TD1.docid,
  • score TD1.scoreQ TD2.scoreQ),
  • score DESC,
  • 20
  • )

7
Keyword Search
  • Inverted index TD(termid, docid, score)
  • TopN(
  • Project(
  • MergeJoin(
  • RangeSelect( TD1TD, TD1.termid10 ),
  • RangeSelect( TD2TD, TD2.termid42 ),
  • TD1.docid TD2.docid),
  • docid TD1.docid,
  • score TD1.scoreQ TD2.scoreQ),
  • score DESC,
  • 20
  • )

8
Vectorized Execution CIDR05
  • Volcano based iterator pipeline
  • Each next() call returns collection of
    column-vectors of tuples
  • Amortize overheads
  • Introduce parallelism
  • Stay in CPU Cache

Vectors
9
(No Transcript)
10
(No Transcript)
11
(No Transcript)
12
(No Transcript)
13
Light-Weight Compression
  • Compressed buffer-manager pages
  • Increase I/O bandwidth
  • Increase BM capacity
  • Favor speed over compression ratio
  • CPU-efficient algorithms
  • gt1 GB/s decompression speed
  • Minimize main-memory overhead
  • RAM-CPU Cache decompression

14
Naïve Decompression
  1. Read and decompress page
  2. Write back to RAM
  3. Read for processing

15
RAM-Cache Decompression
  1. Read and decompress page at vector granularity,
    on-demand

16
(No Transcript)
17
(No Transcript)
18
(No Transcript)
19
(No Transcript)
20
(No Transcript)
21
2006 TREC TeraByte Track
  • X100 compared to custom IR systems
  • Others prune index

System CPUs P_at_20 Throughput (q/s) Throughput /CPU
X100 16 0.47 186 13
X100 1 0.47 13 13
Wumpus 1 0.41 77 77
MPI 2 0.43 34 17
Melbourne Univ 1 0.49 18 18
22
Thanks!
23
MonetDB/X100 in Action
  • Corpus
  • 25M text documents, 427GB
  • docid score 28GB, 9GB compressed
  • Hardware
  • 3GHz Intel Xeon
  • 4GB RAM
  • 10 disk RAID, 350 MB/s

24
MonetDB/X100 CIDR05
  • Vector-at-a-time instead of
  • tuple-at-a-time Volcano
  • Vector Array of Values (100-1000)
  • Vectorized Primitives
  • Array Computations
  • Loop Pipelinable ? very fast
  • Less Function call overhead
  • Vectors are Cache Resident
  • RAM considered secondary storage

25
MonetDB/X100 CIDR05
  • Vector-at-a-time instead of
  • tuple-at-a-time Volcano
  • Vector Array of Values (100-1000)
  • Vectorized Primitives
  • Array Computations
  • Loop Pipelinable ? very fast
  • Less Function call overhead
  • Vectors are Cache Resident
  • RAM considered secondary storage

decompress
26
MonetDB/X100 CIDR05
  • Vector-at-a-time instead of
  • tuple-at-a-time Volcano
  • Vector Array of Values (100-1000)
  • Vectorized Primitives
  • Array Computations
  • Loop Pipelinable ? very fast
  • Less Function call overhead
  • Vectors are Cache Resident
  • RAM considered secondary storage

decompress
27
Vector Size vs Execution Time
28
Compression
  • docid PFOR-DELTA
  • Encode deltas as a b-bit offset from an arbitrary
    base value
  • deltas withinget encoded
  • deltas outside range are stored as uncompressed
    exceptions
  • score Okapi -gt quantize -gt PFOR compress

29
Compressed Block Layout
  • Forward growing section of bit-packed b-bit code
    words

30
Compressed Block Layout
  • Forward growing section of bit-packed b-bit code
    words
  • Backwards growing exception list

31
Naïve Decompression
  • Mark ( ) exception positions
  • for(i0 i lt n i) if (ini )
    outi exc--j else
    outiDECODE(ini)

32
Patched Decompression
  • Link exceptions into patch-list
  • Decodefor(i0 i lt n i)
    outiDECODE(ini)

33
Patched Decompression
  • Link exceptions into patch-list
  • Decodefor(i0 i lt n i)
    outiDECODE(ini)
  • Patchfor(ifirst_exc iltn i ini)
    outi exc--j

34
Patched Decompression
  • Link exceptions into patch-list
  • Decodefor(i0 i lt n i)
    outiDECODE(ini)
  • Patchfor(ifirst_exc iltn i ini)
    outi exc--j

35
Patch Bandwidth
Write a Comment
User Comments (0)
About PowerShow.com