Why another database?
I continually find myself needing an integrated solution while developing software for embedded/desktop/web applications. I wanted a solution that was small, fast, and powerful. And as always, I wanted one that allowed me to develop in an Object-Oriented manor.
Before MyOODB there where no solutions I could use to create my object-model and access it the way I believe object-models should be accessed. Whether I am writing software for the desktop or over the web, whether I want persistence or not, I wanted a solution that handled my object-model in a truly distributed sense.
To this point, I did not want my GUI to require a backing store that needs to be explicitly synchronized with the database. I did not want to create objects that represented the objects in my OODB or have to model and translate to/from my RDBMS. I did not want to be continuously reminded that I had a database and that I needed to do things to synchronize it.
I wanted to be one with my object-model, wherever I was. Consequently, I created the MyOODB project.
Once you define your object-model using MyOODB, your object-model and you can also become one ;-)
Oh ya, I also did not want to pay a lot of money for products that did not do everything I needed them to do.
Configuration
Please explain the values in the root build.properties file?
implExtension = DbImpl
beanExtension = Bean
proxyExtension = DbProxy
The above values define how user object class extensions should be named. implExtension informs MyOODB what the extension will be for object implementations. beanExtension and proxyExtension values define what extension to use for MyOODB code generated helper classes.
dirtyRead = true
mightyWrite = true
nestImplicitWrite = true
The above defines how MyOODB locking scheme will be implemented per object instance. If dirtyRead is defined as true, an object under write modification will be accessible during read type transactions. If false, read transactions will block until the write transaction completes.
If mightWrite is defined as true, admin type users can update an object even if its under write modifications. Since this is a dangerous operation, youll need to figure out how to use this ;-)
If nestImplicitWrite is defined as true, you want an implicit write method invocation to not block other implicit write method invocations. An example of this is when your write method calls on itself. This is a rare situation, but useful.
optimizationLevel = 2
The above defines the object clustering algorithm. Sometimes specifying 1 or 3 can produce better performance, but these cases are rare. Due to the object clustering algorithm, partitioning your file system block size as small as possible is best (any size will work, but try for 512 or 1024).
verifyIntegrity = false
defragmentDatabase = false
The above defines whether the MyOODB Database Server will verify the integrity of the database and/or defrag the database on startup. These calls can always be invoked within your server code at runtime.
tunnelPort = 80
tunnelSslPort = 443
tunnelExtension = /MyOodbTunnelServlet
tunnelTimeoutMs = 60000
tunnelKeepAliveMs = 10000
The above defines how MyOOWEB will be configured. Depending where you locate your servlet access, none of these values should be changed.
How do I create a SSL keystore file for TCPS and/or HTTPS access?
SSL configuration is quite simple. However if you want to create a trusted certificate youll need to register with a certificate authority such as Verisign.
In the same place your java binary is found, youll find the binary keytool.
keytool.keytool -keystore keystore -alias YOUR_ALIAS -genkey -keyalg RSA
Usage
What is MyOODB licensing agreement?
Included in the MyOODB distribution is code and documentation made available by other copyright holders and under different licenses. All these licenses allow worldwide, royalty free distribution, whether alone or as part of a larger product. License, copyright and disclaimer of these software is included in the project/license directory.
MyOODB GPL and LPGL licensing definition applies as follows. If one changes MyOODB source code (i.e. org.myoodb.* client/server code), these changes fall under GPL. However, since this is an Object-Oriented Database and your code is required to run within MyOODB server context, user code falls under LGPL.
In other words, modifications to MyOODB source code needs to be submitted back to the MyOODB project. User code built on top of MyOODB, IS NOT GPL and NEED NOT be submitted or made public.
Where is the documentation for MyOODB? How about some Java Doc?
I just have not written any. Please refer to the examples in the source distribution. I believe it does a good job in showing how to create and deploy a MyOODB solution.
I am having problems compiling and/or running MyOODB examples?
1) Are you using some version of jdk 1.5.x?
2) Are the java and/or javac binaries in your PATH?
3) Have you set JAVA_HOME to point to your jdk1.5.x install?
4) Are you running the examples in project/build/examples?
How do I use MyOODB code generation tools?
I recommend you use Java ANT and create your own generation.xml file like the one I created in the MyOODB project directory. See project/examples.xml for how I generate my examples.
You could always just call org.myoodb.tools.generator.Main explicitly with your MyOODB interface files.
How do I auto-generate MyOODB optimized streaming protocol?
When I have some free time, I plan to add to project/generation.xml the ability to automatically create client and server optimization definition classes. For now, copy from project/examples/org/myoodb/performance the client and server Stream Protocol classes and add to them your own MyOODB objects.
MyOoSDK ( MyOoDB / MyOoXML / MyOoWEB ) © 2007, All Rights Reserved