incubator-bloodhound-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Koželj <pe...@digiverse.si>
Subject Datamodel and data consistency
Date Wed, 24 Oct 2012 12:29:44 GMT
Jure and I have been looking at the datamodel to see what would it take to
implement some of the enhancements that we have in mind.
Here are a couple of observations that pop up:

1. Parent/child relationships are not model by permanent ids but by names
(like version, milestone, product... name) that can be changed by user
through admin interface. A bit unusual but simple and eliminates the need
for joins when no additional data from the other entity is needed.

On the other side, renames of versions, milestones, products... (which are
indeed rare) require update of related tickets.
I imagine that renaming a product which has tens of thousands of tickets
could be a bit problematic. Much more worrying is that at least some of
these renames update tickets individually instead of as a single
SQL statement. At least this should be fixed.

So far this is more or less an implementation issue but it was brought to
my attention that it will escalate into software design issue if we wonted
to run BH in distributed environments (cloud).

2. There is no referential integrity imposed on the db level. But what is
even worse is that there is no data integrity check on application level
either.
     It seems that data integrity is left to the UI and the UI can not do
it even in theory. The following works for example:
      1. Open the new ticket page or popup
      2. Open admin in separate browser window and rename version (imagine
admin renaming staff while you are adding a new ticket)
      3. Switch back to window containing new ticket, it will offer old
version (which does not exists any more in database)
      4. You can now save this new ticket and it will refer to nonexistent
version

     There are other scenarios that can lead to this kind of corrupt data.


Peter

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message