[bind10-dev] revised/refactored data source design proposal
Michal 'vorner' Vaner
michal.vaner at nic.cz
Thu Jun 2 12:51:49 UTC 2011
Hello
I did read the wiki page (I didn't have a look at any of the experiment code),
partly out of curiosity.
I find it reasonable design as overall. But I have few points that worry me a
bit:
* Naming conventions (might be bikeshedding, but I find that good naming makes
a big difference in code readability). For one, isn't database single word,
so it should be written as Database, not DataBase? The second looks like it
would be some base in which data are encoded, like base64, or so.
Second, could we use something shorter, using namespaces, nested classes or
something? Names like DataBaseDataClientCreator are quite long and
unreadable, they kind of get confused one into another (I was thinking „Oh
god, this looks too like Java“).
* You say that each thread will have it's own client, because some databases
can't share the connection. But on the other hand, we really don't want to
have multiple instances of the in-memory data loaded in memory, that would be
both waste of memory and performance penalty. Is it expected that the
in-memory clients will share the data?
* You intend to not have transaction for reading operations. I find this wrong,
as we do multiple queries to the DB per single query. This could produce
inconsistent data.
If we provided methods to start and end a read-only transaction, the
databases supporting this could implement it and the in-memory source would
just have empty methods and we would ensure the consistency in different way
for it.
As we talked about this on the last F2F, we probably don't want the in-memory
to be directly writable, but somehow reload it from permanent storage when it
changes. So we could do some kind of atomic reload (be it big read-write log,
loading in background and replacing the tree, shared pointer tricks and
consistency, etc).
So, would it be possible to add a method to it as well? Or some kind of
transaction-ish object or so?
* What about stuff that is not supported by a given backend? Would the method
throw a not-implemented and the above level would take care of it somehow?
(depending on the feature, if it was attempt to write to it, it would fail,
but in case it would be some DNSSEC support, it could just assume the zone is
not signed if the backend doesn't support it).
On Thu, Jun 02, 2011 at 01:58:26AM -0700, JINMEI Tatuya / 神明達哉 wrote:
> Hopefully we can discuss this in the mean time and start actual
> development tasks in the next release cycle. I also think it would be
> nice if we can discuss this topic in the next biweekly call.
+1
With regards
--
How many Lisp programmers does it take to change a light bulb?
(((H)mmm,) (I'm ((not) sure, better))) (find (out))...
Michal 'vorner' Vaner
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <https://lists.isc.org/pipermail/bind10-dev/attachments/20110602/0adb1b4b/attachment.bin>
More information about the bind10-dev
mailing list