json table storage: one physical *.json file contains the table schema plus all row data. writes are atomic (temp file + replace) to avoid corrupting the table file on crash.