Posted by: 2stepsback | September 10, 2007

A few ideas for db4o

Here is my original post at the forums of the object-oriented database management system (ODBMS) named db4o – short for database for objects:
(Each item also has my perception of the status of that idea at the time of posting – around first week of Aug 2007, IIRC)

  1. Logging of all instructions executed under db4o – low level logging – so that all work done on the database can be stored and accessed for analysis. — Already there on DUC wishlist page. May be in the development build as well.
  2. Benchmark logging/profiling to analyze the performance of any given application’s correct use of the db4o/ODBMS API — OpenTCDB
  3. Remote replication – like in PostgreSQL — dRS
  4. Import from and export to SQL-99 ANSI standard – this will bring a huge amount of projects on board because of the cost difference between maintaining a db4o/ODBMS system and a commercial RDBMS system — SQL Support – some projects and some DUC wishes
  5. distributed, multiple data transactions which enable truly distributed applications to be written – again as in PostgreSQL — dRS or thereabouts
  6. Rewriting of at least two popular opensource business applications to showcase the performance increase gained due to use of db4o/ODBMS – if db4o/ODBMS is not good at all types of applications, to state it as much, but to definitely highlight those applications where db4o/ODBMS is in fact better than the de facto standard of RDBMS.
    This means, in other words, identifying exactly what type of data fetch patterns, and therefore, what kinds of data, give best results with the odbms approach and with db4o/ODBMS in particular – and publishing of a list of specific criteria for data which corrspond naturally (similarity of data organization) to the db4o/ODBMS way of doing things — NEW. Can be taken up by anyone, including me 🙂
  7. Making a single XML DTD (“format”,”schema”,etc.) to which the data to be imported must conform, and then making modules for importing data from and exporting data to, that format. — already in place
  8. Making libraries to write code in any language but have it compile to Java-ByteCode/.Net-IL (using the various language ports available as opensource software)
    — Brand new! Many languages to write code in, compiles to one platform – .Net – possible even in the Java version – bytecode
    — also, various language bindings for db4o – there is a Binding.Net Provider already.
  9. A shell for db4o just as there is an sql prompt for any popular DBMS – the syntax and the rules would probably be much like a normal programming language or operating system commandline – this is also a debugger — Db4o Boo Object Browser for .Net
  10. Caching to increase database speed using any of the popular methods:
    1. the MRU method
    2. the statistics method (median = most frequently used)
    3. other higher order predictive methods derived from calculus and statistics – and – giving the user a way of recording performance in all these methods for any given set of data or any given sub-set of the data – and then gving the user the freedom of choosing which data set or sub set should use which caching mechanism.

    A few sample data sets could be provided to users/customers for evaluation before purchase, at their option, bundled with the download – for representing data that can come in various configurations so that one data set is handled at greatest speed by application of one particular cache policy : For example,

    1. MRU for repetitive searching and sub-searching – fine tuning a search
    2. MFU for single searches unrelated to each other
    3. other specific real-life data-sets for specific cache systems
      — some part is surely done – but I think the choice of caching policy is not given. It should be, considering that PostgreSQL for example, allows choosing types of data structures to be supported at install time.
  11. A visual graph diagram module to visually browse through data classified by some criteria – the criteria need not be part of the data, although in most cases it will be. Assuming that individual data elements are represented by points, the grouping and layout of the bundles of points will be by the criterion/a that are specified at run time. The criteria wil be applied dynamically and the graph will be redrawn to present a “view” of the data. Network diagrams to be used to demonstrate the linkage of a given point with any other point (if a path between the two points does exist). This form of representation of data could be extremely useful for various types of data in the several real-world applications – like mapping, locational logistics, internet traffic monitoring (the most obvious application), any other network traversal problem in any field of life – from social networking to electronic circuit design to climate modelling and so on.
    — Shiny new! For the best explanation, see:
  12. Implementing the controller paradigm (of MVC) into an otherwise “dead” database object that only stores data and does not react. The controller will be an embeddable executable that runs in the background as a continuous background process (a server) and identifies and responds to changes in data elements which are marked for observation. Therefore, the data stored in a db4o database comes to life and can be designed to perform certain routine tasks in much the same way as programming language runtimes handle exceptions. In particular, chains of exception handlers or event-handlers can be used to do a variety of things from routine operations like logging, benchmarking, analyzing, etc. to special things like the application logic of the core program. Of course, as has been seen from the huge demerits of allowing any and all code to run as event driven, there must also therefore be a security or permissions set-up in place.
    — New! much like the Trigger functionality in RDBMSes
  13. This list is also present at the forums for reference, but it may be placed behind a registration, which is painless, nevertheless. Since I can publish here what I thought up (I am clearly not saying only I thought up), I think I can post this here.



%d bloggers like this: