02-10-14, 14:32 #1Registered User
- Join Date
- Feb 2014
Looking for a certain style of database
Hello everyone, this is my first time posting here. I'm a graduate student that is working on a thesis related to program analysis and tool development. I'm actually building off the work of a current PhD student at my university, so a lot of work has already been done. Right now the project involves (at a basic level) analyzing an ant build script and storing facts about that script that can be used to help build maintenance (e.g. what files are required to create this build item). My work will involve some level of integration with a version control system to allow a user to know what has changed in a build over time. That leads into why I am asking for help. Currently the database we use to store these 'facts' have no sense of history. I am wondering if there is any sort of database system that lends itself particularly well to associating information with a range of time periods. Is there a system that lends itself to saying 'This fact is true from commits 1-5, 7-9, 11-23, 24-Present' or something along those lines. If there is anything else that needs to be known that I haven't mentioned when considering possible solutions, please let me know. Any suggestions would be greatly appreciated!
02-10-14, 15:09 #2Jaded Developer
- Join Date
- Nov 2004
- out on a limb
is there a db that will handle this for you automatically...
..not that im aware of, but that doesn't mean much
however you can do what you want relatively easily if you also store the build version and date and referenece that in each component. its down to how you design your schemaI'd rather be riding on the Tiger 800 or the Norton
02-10-14, 16:36 #3Registered User
- Join Date
- Nov 2003
Oracle flashback can do that, but that has a quite heft price tag as that is only available in the enterprise edition.
IBM's DB2 10.1 can also do that and that is even available in the free Express-C version (if I'm not mistaken). You can query a table (that is enabled for versioning) using a syntax like this:
SELECT * FROM some_table SYSTEM VERSIONS AS OF '2014-002-10-18:10:00' WHERE some_column = 42;
IBM DB2 Time Travel Query
Last edited by shammat; 02-10-14 at 16:42.I will not read nor answer questions where the SQL code is messy and not formatted properly using [code] tags: http://www.dbforums.com/misc.php?do=bbcode#code
Tips for good questions:
02-10-14, 17:06 #4Resident Curmudgeon
- Join Date
- Feb 2004
- In front of the computer
A database that was "build aware" so that it understood the concepts of builds, children, dependencies, and versions/revisions would almost be part of the build tool (ANT in your case). I don't know of anything that exists with that level of detailed integration with any product, other than the work files used by the product in question.
You can make almost any database store this kind of information, it is mostly a simple directed graph problem with a novel twist.
Without knowing exactly what kind of information you want to store, I don't know enough to give you a generic way to identify this kind of relationship... It isn't hard, but without specific requirements I don't know how to give you specific steps to track the relationships.
-PatPIn theory, theory and practice are identical. In practice, theory and practice are unrelated.