Most of our tools need only read access for working. However e.g.
FileStorage, when opened in read-write mode, automatically creates
database file and index.
This way if database is opened in read-write mode a simple typo in path,
e.g. to `zodb dump path` would lead to:
- new database at path will be created
- the dump will print nothing (empty database)
- exit status will be 0 (ok) and no error will be reported.
For this reason it is better tools declare access level they need so for
read-only access request we can catch it with an error from storage.
This, however, requires quite recent ZODB to work:
We don't want to force users to always specify read-only in URLs or
zconf files because:
- this is error prone
- URL or zconf can be though as of file
- when a program opens a file the program, not file, declares which type
of access it wants.
That's why access mode declaration has to be internal.