Paper check About

Dremel: Interactive Analysis of Web-Scale Datasets

Proceedings of the VLDB Endowment, 2010 · paper · Computer science

Describes Dremel, a scalable system for interactive ad-hoc queries over read-only nested data, combining multi-level execution trees with columnar storage. It runs aggregation queries over trillion-row tables in seconds and scales to thousands of CPUs and petabytes.

Checked: PDF from static.googleusercontent.com, fetched 4 Oct 2026. Page numbers are those of that PDF.

4 findings

Substance Figure 5, record s1, prints only two Name entries (the second holding Country: 'gb'). Record r1 has three Names, and the Country column in Figure 3 encodes the empty second Name as NULL with r=1, d=1, so s1 should contain an empty Name between the two printed ones.
  • p. 4 Figure 5, output record s1
    Country: 'gb'
  • p. 3 Figure 3, Name.Language.Country column
    NULL 1 1

Judge's note: Figure 2 (p3) shows three Names in r1: the first has Languages en-us/us and en, the second has only Url B, the third has Language en-gb/gb. The Name.Language.Country column in Figure 3 is us(0,3), NULL(2,2), NULL(1,1), gb(1,3), NULL(0,1). The NULL at r=1, d=1 marks a defined Name with no Language. The same figure prints an empty 'Name' for s2 (from r2's NULL at 0,1), so s1 is treated inconsistently and drops its middle Name. This also clashes with the claim that the encoding preserves the enclosing structure of Country, and with the assembly algorithm in Appendix B, which adjusts structure for NULLs when empty records are present.

Second check: another model agreed

Report a problem with this finding
Substance Appendix C: "the common repetition level of Links.Backward and Links.Forward equals 1". Their lowest common ancestor, Links, is an optional (not repeated) group, so by the paper's definition the common repetition level is 0.
  • p. 10 Appendix C, first paragraph
    repetition level of Links.Backward and Links.Forward equals 1
  • p. 4 Figure 4
    Links.Backward

Judge's note: My own working: the schema in Figure 2 declares 'optional group Links', so the repetition level of Links counts no repeated fields and is 0. Figure 4 (p4) agrees: the Backward→Forward edge is labelled 0, and both fields have self-loops labelled 1. Under Step 3 of Figure 18 (lines 15-17), levels 0..barrierLevel transition to the barrier. A barrierLevel of 1 would send level 1 to Forward and contradict the self-loop on Backward. The worked example is therefore wrong as printed.

Second check: another model agreed

Report a problem with this finding
Reference or label Figure 14 caption: "Query Q5 on T5 illustrating stragglers at 2× replication". The stragglers experiment on T5 is Query Q6 ("Query Q6 below is run on a trillion-row table T5"); Q5 is the top-k query on T4 (Figure 13).
  • p. 7 Figure 14 caption
    Query Q5 on T5 illustrating stragglers at 2× replication
  • p. 7 Stragglers paragraph
    Query Q6 below is run on a trillion-row table T5
  • p. 7 Section 7, Stragglers paragraph
    Query Q6 below is run on a trillion-row table T5.
  • p. 7 Figure 14 caption
    Figure 14: Query Q5 on T5 illustrating stragglers at 2× replication

Judge's note: Page 7: the Figure 13 caption defines Q5 on T4. The Stragglers text defines Q6: SELECT COUNT(DISTINCT a) FROM T5 and cites Figure 14 for its per-tablet processing times. The caption names the wrong query.

Second check: another model agreed

Report a problem with this finding
Reference or label Appendix B: "On Line 12, we use a 'full definition level'." In Figure 17 that call is on Line 11 ("MoveToLevel(full definition level of reader, reader)"); Line 12 is "end if".
  • p. 9 Appendix B text
    On Line 12, we use a ‘full definition level’.
  • p. 9 Figure 17 line 11
    MoveToLevel(full definition level of reader, reader)

Judge's note: Page 9 image of Figure 17: line 10 is else, line 11 is MoveToLevel(full definition level ...), line 12 is end if. The other pointers in the same text (Lines 4, 5, 22, 30) match the figure.

Second check: another model agreed

Report a problem with this finding
7 minor (typos and the like; most checked by the judge only)
Wording Abstract: "capable of running aggregation queries over trillion-row tables in seconds". The only trillion-row experiments reported are Q5 on T4 (Fig. 13: about 220 s at 1000 nodes falling to about 55 s at 4000 nodes) and Q6 on T5 ("from less than a minute to several minutes").
  • p. 1 Abstract
    it is capable of running aggrega-tion queries over trillion-row tables in seconds
  • p. 7 Figure 13 / Scalability; Stragglers text
    slowing down the query response time from less than a minute to several minutes

Judge's note: Read the abstract on p1, and Figure 13 plus the Stragglers text on p7. The fastest trillion-row time in the plot is about 55 s, and Q6 takes from under a minute to several minutes. Results of a few seconds come only from smaller tables. 'In seconds' could be meant loosely, or could refer to production use, so this is recorded as a wording observation and not as an error.

Second check: another model agreed

Report a problem with this finding
Wording "a system of 3,000 leaf servers each using 8 threads has 24,000 slots. So, a table spanning 100,000 tablets can be processed by assigning about 5 tablets to each slot". 100,000/24,000 is about 4.2.
  • p. 5 Section 6, Query dispatcher
    assigning about 5 tablets to each slot
  • p. 5 Query dispatcher
    a table spanning 100,000 tablets can be processed by assigning about 5 tablets to each slot

Judge's note: Checked on p5. The printed example yields about 4.2 tablets per slot. Rounding up to a whole number gives at most 5 for some slots, so 'about 5' is loose rather than plainly wrong.

Second check: another model agreed

Report a problem with this finding
Typo Section 3: "the order of field occurences in a record" should read "occurrences".
  • p. 2 Section 3, Data Model
    the order of field occurences in a record

Judge's note: The page image on p2 shows 'occurences', so this is not an extraction artefact.

Second check: none (judge only)

Report a problem with this finding
Typo "When a leaf server cannot access one tablet replica, it falls over to another replica." The standard term is "fails over".
  • p. 5 Section 6, Query dispatcher
    it falls over to another replica

Judge's note: The page image on p5 confirms the wording. This is a cosmetic slip and the meaning is clear.

Second check: none (judge only)

Report a problem with this finding
Typo Appendix B: "Procedure ReturnsToLevel (Line 30)". Figure 17 defines it as "ReturnToLevel(int newLevel)".
  • p. 9 Appendix B, last paragraph
    Procedure ReturnsToLevel (Line 30)
  • p. 9 Figure 17 line 30
    ReturnToLevel(int newLevel)
  • p. 9
    Procedure ReturnsToLevel (Line 30) is a counterpart

Judge's note: The page 9 image shows 'ReturnsToLevel' in the prose and 'ReturnToLevel' at lines 15, 17 and 30 of Figure 17.

Second check: none (judge only)

Report a problem with this finding
Typo Appendix A: "input data can have thousands of fields and millions records". The word "of" is missing ("millions of records").
  • p. 9 Appendix A, last paragraph
    thousands of fields and millions records
  • p. 9
    thousands of fields and millions records, it is not feasible

Judge's note: Confirmed on the page 9 image.

Second check: none (judge only)

Report a problem with this finding
Typo Figure 17 line 30: "ReturnToLevel(int newLevel) {" opens with a brace, while the other procedure headers end with ':' and every procedure closes with 'end procedure'.
  • p. 9 Figure 17 line 30
    ReturnToLevel(int newLevel) {

Judge's note: The page 9 image confirms the '{' on line 30. The reviewer also says the 'procedure' keyword is missing, but that is not specific to this header: MoveToLevel (line 22) and AssembleRecord also lack it. Only the brace punctuation is inconsistent.

Second check: none (judge only)

Report a problem with this finding
Something wrong with this page, or a finding we missed?