2112,
You're still missing the point. As I've said in other threads -- I get a sense that you know what you're talking about, but you provide nothing actionable -- only criticism. Yet, threads like this would benefit from actual experience and advice you might have instead of just criticism. I'd like to have a rational conversation with you, but I can't because the only tool in your toolbox is for insulting people's intelligence.
Here's how this thread could've gone:
etotheipi: Hey, how's this database structure look?
2112: Have you considered using a relational DB engine instead of LevelDB? It looks like that's what you're trying to recreate and LevelDB isn't production quality.
etotheipi: Possibly. LevelDB has properties A,B,C,D and E all of which fit perfectly into my app. My use case is simple enough that I don't mind the lack of relation-handling.
2112: You really shouldn't use LevelDB because it's a toy. Take a look at SomeDB1, it's got properties A,C,D, and E, and also adds F and G
etotheipi: But I really want property B for some reason, and G is not that important to me
2112: Try SomeDB2, it has properties A,B,C,E,F. You could change your structure to storing blocks like <> and headers and merkle roots like <> and you'd have everything you want.
etotheipi: I've never heard of SomeDB2, I'll look into it. Thanks!
See how pleasant that is? No one has to be insulted, and you're experience/expertise is pleasantly communicated in a way that I don't have to lose face to even begin to agree with any of your points. It's not that avoiding "losing face" is my number one priority, it's that your writing style (which I still can't tell if it's intentional or not) immediately turns the whole thread hostile. You seem to want to insult more than help. You could have a constructive relationship with the users on this forum that you are trying to help.
But I did provide an actionable advice:
I know that you have a copy of Visual Studio and you theoretically could prototype your design using the dirty, grimy, foul-smelling, ...ugh... relational ...ouch... SQL database engine really quick.
Of the "alternative clients" category I see only grau (and his supernode) as the only developer with the broad familiarity of the database technology. Maybe take a look at his code if you don't want to prototype with the Visual Studio? Database abstraction layers aren't a recent invention. They are well known, many of them are available, there's a plenty of places to look for inspiration and discussion of pros and cons.
In other words: you cannot get married to
any database engine this early in the project. Any advice to the contrary would be a misdirection. You need to find either:
1) a database abstraction layer for Python that suits your style and needs
2) define your own abstraction layer in Python after prototyping using 1 or 2 (maybe 3) schemas/databases.
Either solution will work. I'm actually not familiar enough with your needs to give you definite answer. For Java I used JDBC. On Windows and for prototyping I used ODBC & ADO. I like using Windows for prototyping because the intense competition on that market facilitates making rational choices even if the real target isn't Windows. Most of the time I used solution (2) because of the existence of the domain-specific standards for database interface and I did my implementations in a mixture of C/C++/domain-specific languages, not Python.
Consider this hypothetical discussion:
etotheipi: Hey, I've choosen Intel GMA for Armory display engine. Any comments?
2112: Dude, prototype first, then make a choice.
etotheipi: Die in a fire! AMD, NVidia, Intel or GTFO?
2112: No really, there are abstraction layers that will allow you to make that selection last, once you exactly know and can measure your needs.
etotheipi: OK, I hear ya.
Qt looks like a decent layer that will isolate me from the vagaries of graphic display market. It looks like pain it the neck, but I need to learn
some way of not painting myself into the corner.
2112: Hurray!
Honestly, I've never been so deep in the rabit hole that I've seen the firmament as only a single star. Even when I was in a hole I knew that there is more than one star in the sky and if I can get my nose away from the grindstone I'll see at least couple of stars, not just a single one. I've both: (a) seen the sky with my own eyes and (b) in the school they told me that there's a plenty of stars to choose from.