Skip to content

Commit 027b973

Browse files
authored
Merge pull request #162 from Anionix/codex/narrow-format-selection-recommendations
Narrow format selection recommendations
2 parents 5b5c58e + 88d4efc commit 027b973

2 files changed

Lines changed: 28 additions & 2 deletions

File tree

‎docs/format-selection.md‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ different inputs and success rules.
1515
| LLM prompt payload | Compact TSV | It used the fewest measured tokens for the shared seven-field prompt contract. Include the taxonomy dictionary and schema, and use a self-describing representation when consumers cannot share that contract. |
1616
| Human-readable structured exchange | Object JSONL | Field names travel with each record, making inspection and ad hoc tooling easier. It costs more bytes and tokens than array JSONL or Compact TSV. |
1717
| Simple line-oriented interchange | CSV | It is widely supported and easy to inspect, but schema, NULL, quoting, and type rules must be supplied separately. It is not the typed storage baseline. |
18-
| Time-series workloads | TsFile | The adapted million-row time-series workload supported the time-range claim. It was not a fair Stars comparison and had slower writes, so do not select it for general tabular data from this study. |
19-
| Experimental numeric pipeline | FastLanes | The corrected pipe-delimited numeric run round-tripped. String partial-vector cases and malformed-input crash evidence remain, and the pinned Python binding currently has a reproducible macOS build blocker. |
18+
| Measured device/tag time-range query | TsFile | The adapted synthetic workload used 100 devices with 10,000 points each and measured a 1,000-row time range. It was not a fair Stars comparison and had slower writes; other time-series access patterns were not evaluated. |
2019

2120
## Formats Without A Selection
2221

@@ -25,6 +24,12 @@ attempts. They remain research leads, not production recommendations. Their
2524
exact commits, failures, and retry conditions are recorded in the
2625
[negative-evidence records](../research/formats/).
2726

27+
FastLanes also has no general selection yet. Its corrected pipe-delimited
28+
numeric case round-tripped, but partial-vector string cases failed, malformed
29+
input terminated the process, and the pinned Python binding hit a reproducible
30+
macOS build blocker. Keep it as experimental evidence until those retry
31+
conditions are resolved.
32+
2833
DuckDB is a query engine and can be useful with several of these formats. It is
2934
not a competing file-format row in this guide.
3035

‎tests/test_format_selection.py‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from pathlib import Path
2+
3+
4+
GUIDE = Path(__file__).parents[1] / "docs" / "format-selection.md"
5+
6+
7+
def _section(text: str, heading: str, next_heading: str) -> str:
8+
start = text.index(heading)
9+
end = text.index(next_heading, start)
10+
return text[start:end]
11+
12+
13+
def test_selection_guide_only_recommends_measured_workloads() -> None:
14+
text = GUIDE.read_text()
15+
decisions = _section(text, "## Quick Decisions", "## Formats Without A Selection")
16+
incomplete = _section(text, "## Formats Without A Selection", "## Decision Rules")
17+
18+
assert "| Measured device/tag time-range query | TsFile |" in decisions
19+
assert "| Time-series workloads | TsFile |" not in decisions
20+
assert "| Experimental numeric pipeline | FastLanes |" not in decisions
21+
assert "FastLanes also has no general selection yet." in incomplete

0 commit comments

Comments
 (0)