Object oriented storage with validation
Ilpo Nyyssönen
iny+news at iki.fi
Tue Apr 26 01:08:30 EDT 2005
"Fredrik Lundh" <fredrik at pythonware.com> writes:
> Ilpo Nyyssönen wrote:
>
>> What is the point in doing validation if it isn't done every time? Why
>> wouldn't I do it every time? It isn't that slow thing to do.
>
> DTD validation is useful in two cases:
[...]
I didn't mention DTD validation. Yes, I know the limitations of DTD
validation. DTD validation gives a clear error message with line
number in case of it doesn't match.
Show me this:
- An object oriented storage library
- A flat thing is not enough, needs some hierarchy, like in XML
- Validation that also converts the data to pythonic types, like
numbers to ints or data of my objects to my objects
- Includes a way to define version migration steps
- Parsing and validation must be fast
- Storage format preferably a readable text file
- Easy to use in application
These things would be nice to have in it too:
- Multiple backends, at least text file, XML and SQL database
- Some kind of synchronization or replication utilities
>> Pickle doesn't have validation. I am not comfortable for using it as
>> storage format that should be reliable over years when the program
>> evolves. It also doesn't tell me if my program has put something other
>> to the data than I meant to.
>
> But DTD validation doesn't tell you that either -- it's only concerned
> with the structure, not the content.
[...]
Pickle doesn't have even that. Also I can't read pickle file without
doing some program to dump it in readable format. So, I can't use
validation to make sure the data in pickle is the one I want and I
can't use less to see what is in the file. I really have NO IDEA what
is in a pickle file.
Or, yes, I clearly would need to build the validation myself on top of
it! Not going to happen.
> If you want the simplest thing, get rid of the DTD, and make your
> loader ignore things that it doesn't recognize, use default values for
> fields that are not required (or weren't in the format from the start),
> and give a nice readable error message if something required is
> missing. That'll give you a nice, portable, reliable, and extremely
> future-proof design.
So my program will just work in the wrong way if I make a typo to a
non-required field when writing the file? No thanks.
--
Ilpo Nyyssönen # biny # /* :-) */
More information about the Python-list
mailing list