Basically,
what i have put in the post is a bare minimum of what i have, the encryption is a 1gig encryption, which takes about 2 seconds to encrypt and decrypt. As far as my compression algorithms go, were running about a 2mb compression algorithm for now because like you said, that will slow down the system, and a better algortihm is yet to be found. Also, the memmory mangement technique im using is far from lmitting, and proves to be worth while, as ive tried a sample database, with multiple fields, and 500 records, which comes to about 18meg. The file opens in seconds, and doesnt cause a flood of system resource failures, as it is unique to the point where it bypasses the memmory completely and communicates directily with the processor, like on a MAC.
1gig encryption? 2mb compression? What do those mean? Are you using a 8589934592 bit encryption key? This isn't making sense. Also, the 2 seconds to encrypt-decrypt: are those for each database query? If so, that is irrationally long, and would never survive in a production environment.
There is an API, but it is being developed as I go. A good reference would be the API for xBase 64 dbms. Further more, this dbms, is more of a db engine and front-end there of, rather than an editor for multiple formats, which is where the file formats come in.
I'd recommend you take a few weeks to design before you code. Developing an API as you write the system will almost always yield a very ugly, disorganized code base and API.
Also, unlike SQL, the dbms, does not require any custom scripting, it will like to a cgi or C++ application using a library, and you develop from there, as it's built in multi-threading, does not require the user to code there own threads in there application.
Actually, the structure of SQL is such that the specific implementation of operations can be determined by the DBMS optimizer rather than by the coder. For example, if you have a query:
SELECT * FROM Users u INNER JOIN Items i ON i.owner = u.id
Will the programmer (writing the client app) know which type of join operation will be most effective? Likely not, as it depends on the data set being worked with. SQL optimizers can quickly estimate the number of expected results, then determine which algorithm for the join is likely to be most efficient.
oh... and no other database format to my knowledge allows for multimedia, or files in general to be stored within a field, which is the purpose for designing this structure. If i am wrong PLEASE let me know.
If I were designing a database, I'd have the DB hold links to the multimedia. A few reasons for this: 1) saving a link is compatible with DBs that only deal in text, 2) it's more portable for a system design, i.e. if the text is part of a link which may have other parts in client-side storage or elsewhere in the DB, and 3) it will always take longer when you have to work with more data; by keeping only text in the database, the DBMS can execute faster and the client app can request any multimedia files returned from a DB query.
If you're doing this simply as an excersize, I think it's a great idea, but I'd say you should do a lot more research and planning. Unfortunately, research and planning are two of the most important parts of a project of any real size. Anyways, good luck