Win a copy of The Little Book of Impediments (e-book only) this week in the Agile and Other Processes forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

[NX: Contractors] Database Design

 
Matthew Blaise
Greenhorn
Posts: 10
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Calling all Contractors!
It seems that the backend of the database can be implemented in almost any conceivable way, as long as it can be accessed with an object that implements the DBAccess interface. I'm just wondering if anyone has any more generic designs for this or is everyone just creating a "dummy" database that just implements the interface directly. This problem has been plaguing me for a while now. If I get carried away, I'll end up making a "real" database which will take forever (and be really hard). However if I make a "dummy" it seems like I should be doing more to support any future development or reuse. The only clue I have is in the instructions.
"The IT director does not anticipate much reuse of the first Java technology system, but intends to user that system as a learning exercise before going on to a web based system."
What do you think? If you have a more complex design please tell a little about it.
Blaise
 
Philippe Maquet
Bartender
Posts: 1872
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Matthew,
I don't think that your question is specific to Contractors, so I'll reply even if I am an URLyBird guy.
I faced the same dilemma as you.
The only clue I have is in the instructions.
"The IT director does not anticipate much reuse of the first Java technology system, but intends to user that system as a learning exercise before going on to a web based system."

It's up to us to interpret that as we feel it. Here is my own interpretation :
The IT director does not anticipate much reuse of the system because it's a learning exercise, meaning that you shouldn't be penalized in you don't bring as many reusable parts as a senior developer would do.
Now, as everybody, I learn to design by designing and to code by coding, so I've decided to put my natural laziness aside and try the best I can do in all parts of the application.
I am not sure it's the best way to get a high score, reading this in the instructions :
A clear design, such as will be readily understood by junior programmers, will be preferred to a complex one, even if the complex one is a little more efficient. Code complexity, including nesting depth, argument passing, and the number of classes and interfaces, should be reasonable.

There is at least a tradeoff to be done between design complexity and efficiency.
What do you think? If you have a more complex design please tell a little about it.

I don't know if my database design is more complex than yours, but here are a few superfluous things I put in it :
  • Multiple tables support
  • Locking delegated to a lock manager, with automatic deadlock prevention even accross multiple tables, and optional timeout
  • Table creation
  • Support for multiple encodings (all of them which have a fixed bytes-per-char ratio)
  • Table format conversion
  • Read cache with optional maximum size. If the cache has a maximum size, a cleanup process removes exceeding records taking into account items last access time and number of hits.
  • Write cache
  • Optional indexes to speed up findByCriteria()
  • Multiple reads / exclusive writes concurrency support


  • Regards,
    Phil.
    [ July 31, 2003: Message edited by: Philippe Maquet ]
     
    Matthew Blaise
    Greenhorn
    Posts: 10
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Thanks Phil. That's exactly the kind of response I'm looking for.
    If anyone else had to design a database, please comment about your decision to add extra features or not. Did anyone make a simpler database, designed only to support sun's requirements?
    Blaise
     
    • Post Reply
    • Bookmark Topic Watch Topic
    • New Topic