>>14
I haven't written one. But at least with a struct, all errors introduced by changing something will be caught at compile-time.
>>15
It's a trade-off between apparent type-safety and convenience. Compare a struct with a hashtable, for instance. The new format introduced won't change anything because the existing codebase could not make any assumptions about the structure of the nosql database in the first place.