Replies: 24 comments
From issue #292 — Sequential stopping rule§3.2 Benchmarking methodology for data systems
§4.1.2 Replication and randomization
§4.2.3 Iteration counts
§4.5 Threats to validity
|
From issue #310 — Stop reason fix on warmup failureMinor. The fix ensures |
From issue #312 — Transient failure tolerance (Ch.4 sections)§4.2.3 Iteration counts
§4.5 Threats to validity
|
From issue #306 — GiST index + ANALYZE after seed§4.5 Threats to validityAcknowledge planner-statistics staleness as a former confound. Suggested row for Table 4.5.1:
|
From issue #309Section 4.1.1 — Factors and levels (p. 41, Table 4.1.1)Table 4.1.1 lists RQ2 worker count levels as 2, 4, 8, 12, 16. After #309 the Section 4.2.1 — Workload taxonomy (p. 42)Text says the spatial join "resolves through either broadcast or partitioned execution." The Section 4.4.6 — Answering RQ2: Scaling against single-node (p. 51)Text reads: "Speedup and parallel efficiency are computed as functions of worker count across the levels 2, 4, 8, 12, and 16 nodes. Each Sedona execution strategy is treated separately." |
From PR #326§4.5 Threats to validityThe internal-validity paragraph (p 53) lists four measures that limit the shared-infrastructure confound: concurrent pairing, seeded order randomization, warmup, and a fresh cluster per distributed run. It does not address what happens when a batch member fails mid-run (e.g. Databricks quota exhaustion). PR #326 adds orchestrator-level detection for this: when one or more members of a batch crash, the surviving peers complete without their matched counterpart, weakening the concurrent-pairing assumption. The orchestrator now logs whether the failure was partial (some peers survived) or total (entire batch lost). Suggested addition to Table 4.5.1 or the internal-validity paragraph: a note that partial batch failure is detected at the orchestrator level and recorded, so affected batches can be identified during analysis. The threat is that surviving peers ran under the same wall-clock window but without the contention their paired counterpart would have introduced, which could bias their measurements favorably. |
From PR #328§4.5 Threats to validity — Table 4.5.1 (p54)Add a new construct validity row:
This threat was discovered during development: a partitioned join on the small dataset with 4 workers ran for 1.3+ hours on a single task instead of minutes across all executors. §4.2.3 Iteration counts (p44)The section states that the distributed configuration runs seven iterations. Add a note that a per-iteration hard timeout (3600 s) stops the benchmark if any single iteration exceeds the threshold, preventing runaway iterations from consuming cluster resources indefinitely. |
From issue #254Section 4.1.1 — Factors and levelsTable 4.1.1 lists "Client compute" as a constant factor ("Same instance sizing and process"). The concrete sizing is now 4 vCPU / 16 GB for all ACI containers (changed from 3 vCPU / 8 GB). The table itself is abstract enough that no text change is needed, but when cross-referencing Ch. 5 (where concrete values are stated), ensure alignment with the new spec. Section 4.1.2 — Replication and randomizationText mentions "identically provisioned client instances" and defers "container sizing" to Ch. 5. No change needed here — the statement remains true, and the new uniform 4/16 spec actually strengthens the "identically provisioned" claim by also matching the Databricks worker class. |
From issue #254§4 — Benchmark selection: Sedona default join strategy droppedThe three Sedona default-strategy national-scale spatial join benchmarks ( Reason: These benchmarks were intended to serve as a baseline for Sedona's spatial join performance without an explicit broadcast or repartition hint. In practice they:
The thesis should acknowledge this in the methodology chapter: the default join strategy was considered as a baseline but excluded because the per-iteration cost and failure rate made it infeasible to collect reliable measurements within the budget and time constraints of the study. The broadcast and partitioned strategies remain and provide the Sedona comparison points against DuckDB and PostGIS. |
From issue #254 — Hard timeout increased to 450 minutes§4.2.3 Iteration countsThe cumulative hard timeout ( Supersedes prior notes: the #292 comment describes the hard timeout as "1 hour" and the #328 comment cites "3600 s" — both now outdated. Update the stopping-rule description to state the 450-minute hard timeout for both the per-iteration and cumulative checks. Why: 90 minutes was too tight for long-running national-scale spatial joins on larger dataset tiers, especially on Databricks where cluster startup and executor provisioning consume part of the window. The 5× increase gives enough headroom for slow iterations to complete rather than being killed as timeouts, producing usable samples instead of discarded |
From issue #297 —
|
| Validity | Threat | Mitigation |
|---|---|---|
| Construct | RQ1 Shapefile configuration uses GeoPandas engine instead of DuckDB, conflating engine and format differences | Acknowledged as a limitation; results for this configuration reflect the GeoPandas+Shapefile stack rather than DuckDB+Shapefile |
From issue #298 — National-scale join iteration count: thesis says 7, code says 5§4.2.3 Iteration countsText states "the national-scale join runs for seven iterations." Code has |
From issue #301 — BBox workload has undocumented area predicate§4.2.2 Workload definitions — Bounding-box filteringText says the workload "returns every building whose geometry intersects [the window]." Code adds a compound predicate: Also note that the §4.5 Threats to validityAdd a row to Table 4.5.1:
|
From issue #299 — Distributed benchmarks run warmup despite §4.1.2 saying they don't§4.1.2 Replication and randomizationText states: "The distributed configuration is the one exception to the warmup discipline. [...] They are therefore omitted." Code does the opposite — Update §4.1.2 to acknowledge that warmup is run against the reused cluster, and remove the "first-run variance carried into analysis" framing. Also update the cost rationale: §4.1.2 says "a discarded warmup run would provision an entire cluster only to throw the result away," but the code provisions one cluster and reuses it for warmup + timed iterations. The provisioning-cost argument does not apply. §4.4.5 / §4.4.6 — AnalysisTable 4.5.1 references the warmup asymmetry ("Warmup is omitted for [distributed]... its first-run variance is carried into the analysis"). Since warmup is actually run, this row should be removed or revised — the timed iterations measure a warm engine, not a cold cluster. §4.5 Threats to validityRemove or revise any row in Table 4.5.1 that treats distributed-benchmark cold-start variance as an acknowledged threat, since warmup eliminates it in practice. |
From issue #303 — PiP workload uses 10 mixed probes, not a single fixed point§4.2.2 Workload definitions — Point-in-polygonReplace "tests a fixed query point" with:
§4.4.5 Analysis framingNote that per-probe latency is averaged across the 10-point set. The 30/70 inside/outside mix exercises both fast-reject and confirmed-hit paths of the spatial index, which is a deliberate design choice not captured in the original "fixed query point" description. |
From issue #304 — PiP queries return COUNT(*), not containing polygons§4.2.2 Workload definitions — Point-in-polygonReplace "returns the polygon or polygons containing it" with:
§4.3.2 Metrics — Result cardinalityAdd a note that for PiP, §4.4.5 Analysis framing — Bytes receivedNote that PiP's |
From issue #305 — BENCHMARK_RUNS = 1, reproducibility analysis has no data§4.4.1 Repeatability vs reproducibility (Table 4.4.1)The reproducibility row in Table 4.4.1 cannot be filled — there is no second run on a separately-provisioned host. Drop the reproducibility row or mark it as "not exercised in this study." §4.1.2 Replication and randomizationRemove or revise the sentence: "the seed is reused across runs to ensure reproducibility." With §4.4.3 Reproducibility referencesRemove the claim "the seeded re-runs probe reproducibility instead" — no re-runs exist. Frame the design as repeatability-only: within-run iterations provide the variance estimate, but cross-run reproducibility was not exercised due to cost constraints. §4.4.6 Multi-run varianceRemove the multi-run variance treatment ("warm-cluster measurements do not satisfy the independence that the single-node samples approximate"). With one run, there is no multi-run variance to treat. §4.5 Threats to validityAdd a row:
|
Correction — issues #303, #304, #305The earlier comments for these three issues are superseded. The thesis is the source of truth — code will be updated to match:
No thesis text changes needed for these three issues. |
From PR #343§4.3.4 Cost model (p. 46–47)The text correctly states: "The egress term is treated as near-zero under one modeling assumption: that transfer remaining within a single region and tenant is not billed as outbound traffic. A charge therefore arises only when the distributed engine moves data across a region boundary." PR #343 now implements this charge. Consider adding a sentence after the quoted passage, e.g.:
Also: Equation 4.1 uses §4.4.6 Answering RQ2: Scaling against single-node (p. 51–52)The crossover analysis compares distributed cost against single-node cost. The driver node fix increases Databricks cost asymmetrically by cluster size (33% for 2-worker, 20% for 4-worker, 6% for 16-worker). Smaller clusters are relatively more expensive than previously reported, which could shift crossover points rightward. If results are re-collected with the corrected cost model, note that the crossover may occur at a higher worker count than earlier drafts suggested. §4.5 Threats to validity (p. 52–54)Table 4.5.1 lists under External validity: "The distributed configuration alone may cross a region boundary and so incur an egress charge the single-node configurations avoid (Section 4.3.4)." This was listed as an accepted asymmetry. PR #343 now corrects this: cross-region egress is measured and priced at $0.02/GB for Databricks blob reads. Update Table 4.5.1 to reflect that this is no longer an unmeasured asymmetry — it is now an explicit cost term. The residual threat is that the $0.02/GB rate is a hardcoded constant that could become stale if Azure pricing changes. |
From issue #341Section 4.1.1 — Factors and levels (p. 40–41)
Section 4.2.2 — Workload definitions (p. 44)
Section 4.2.3 — Iteration counts (p. 44)
Section 4.4.6 — Answering RQ2: Scaling against single-node (p. 51)
|
From PR #347Section 4.5 — Threats to validityConsider adding a construct validity entry to Table 4.5.1:
This is distinct from the existing internal validity threat about shared cloud infrastructure — it concerns the identity of the algorithm under test, not its variance across runs. |
From issue #348§4.1.2 — Replication and randomization (p. 41)The thesis describes a single replication count applied uniformly to all experiments. The framework now differentiates: each experiment in Consider adding a sentence noting that the replication count is set per workload family (30 for RQ1, 3 for RQ2) rather than globally, with the rationale that RQ1's cheap iterations benefit from more samples while RQ2's expensive cluster-backed iterations do not. §4.2.3 — Iteration counts (p. 44–45)Three timeout constants changed:
The fixed-iteration ceiling increase (75 → 300 min) is the key fix: the old 75-minute ceiling was capping RQ2 experiments (e.g., duckdb-medium at ~25 min/iter × 4 total ≈ 100 min) before they could complete all timed iterations. §4.5 — Threats to validity (p. 52–56)Table 4.5.1 lists the threat: "A bootstrap confidence interval computed from fewer than thirty samples is noisy." With 30 RQ1 benchmark runs (each producing many sequential-stopping iterations), the sample pool for RQ1 experiments is now substantially larger. Consider noting that this threat is largely mitigated for RQ1 but remains for RQ2 (3 runs × 3 timed iterations = 9 samples per experiment). |
From issue #357Adding 12-node clusters to the Sedona benchmark matrix changes the worker-count factor from four levels to five. Three places in Ch. 4 need updating: §4.1.1 Factors and levels (p40)
→ Change to five levels: 2, 4, 8, 12, 16. Table 4.1.1 (p41)Worker count row currently lists levels as → Update to Table 4.2.1 (p44)Spatial join configurations column says "partitioned; 2–16 workers". → Update to explicitly list RationaleThe 12-node level fills the gap between 8 and 16 to give a finer-grained scaling curve. Partitioned-join entries at medium and large remain |
From issue/PR #357Section 4.1.1 — Factors and levels (p40)Text says: "RQ2 varies the worker count of the distributed engine across four levels, from 2 to 16 nodes" Should be five levels now that 12-node clusters are added: "…across five levels, from 2 to 16 nodes, tracing how the spatial join scales with increasing parallelism." Table 4.1.1 (p41)Worker count row currently lists levels as 2, 4, 8, 16. Update to 2, 4, 8, 12, 16. Table 4.2.1 (p44)Spatial join configurations column says "partitioned; 2–16 workers". The range notation still covers 12, but for consistency with the explicit level count change in Table 4.1.1, consider updating to "partitioned; 2–16 workers, five levels" or listing them explicitly. |
Uh oh!
There was an error while loading. Please reload this page.
Purpose
Working notes for Chapter 4: Research Design and Methodology of the master thesis
"Benchmarking Cloud-Native and Traditional Geospatial Technologies."
Use this thread to draft, discuss, and refine content for the following sections:
Sections covered
Key design decisions to document
How to use this thread
Post notes, draft paragraphs, open questions, and revision requests as comments.
All reactions