do you use NoSQL databases?

I am sitting in a NoSQL database (I am not naming names at the moment) training and was wondering, does any use NoSQL databases with Xojo? there are plenty of options out there… MongoDB, Riak, CouchDB, Cassandra, BigTable, Memcached, etc…


Been looking for the right problem to apply one to. The fortunate thing is that with these new things, I just expect to use an HTTPSocket to do a query, so no Database API or plugins to contend with.

Not in production yet, but I’ve tested it to a local couchdb database and the REST interface does make things rather simple.

Mind you, I was doing that with MySQL anyway. No need to bog Xojo down with queries and the like. None of my stuff is what i would call real, realtime, though. I can queue most of my work and as long as the result is returned in a few seconds then all is well. I use a database for the queues, polled by the processes that deal with them and checking for results when I’ve got a moment.

Interested in Berkeley DB.

I have used MongoDB but with .NET the speed of retrieval was impressive and the flexibility of not having a ‘hard’ schema is good for some applications such as documents that evolve over time but you end up writing code to compensate to test the document structure for ‘new’ information. I believe that some other NoSQL databases offer a document schema of sorts. There was a big NoSQL revolution a few years ago that seems to have gone a bit quiet - maybe it has just settled down to were and what it is good at rather than trying to take over the database world.

I have interest in MongoDB. It looks like a good dbase for certain types of situations.

there is no “driver” for Xojo right now. which means no MongoDB for me right now.


I’ve looked at porting the Python one - just haven’t done it :stuck_out_tongue:

How would the database api(s) be accessed?

robert: the database is written to via a “driver” (that is a mongodb term). the driver knows which node(s) you can write to, and what node(s) you can read from. the driver does the heavy lifting of the queries/writes/updates/etc.

norm: you slept last night right? should of skipped it and wrote the driver. :slight_smile:

Scott, how are the drivers accessed from within Xojo?

robert: I am not 100% sure as they dont exist. in Perl/Python/Ruby they are modules/modules/gems (respectfully). .Net/C# is a dll. and so on. So my guess it it would be a module with several classes within it (for the various parts of the "driver:). it would depend greatly how it is written.

For Xojo, we already have Valentina. I used a long time ago without SQL, only with the language of Valentina. It was great. Queries were simple and clear. It is powerful and fast. The support is very effective too. Above all, the requests are not in strings, but fully integrated into Xojo as methods. It is much more effective.

I do not know if Valentina can be called NoSQL. But you can use it without SQL with object methods, and directly accessing columns natively (object-relational column database)

But I think the language of Valentina is only usable with a local database. With a client / server Valentina database, use SQL (check).

Wakanda looks very good too, but it may still be young, and not interfaced with Xojo.

I’m interested in Berkeley DB. It’s a series of c api(s) (similar to SQLite I believe). How can I access the c code from with Xojo, or is that not possible?

BDB can probably be wrapped up with a bunch of declares to access the shared libraries
I haven’t willingly used BDB in a very very long time (maybe 13 years or more)

Norman, any example code? Any expectations on response time?

Sorry no - last time was in C :stuck_out_tongue:

Should be reasonable

I wonder how Xojo did it with SQLite. Paul Lefebvre (or someone from Xojo), could you explain how you access the c api(s)?

[quote=32709:@Robert Kamarowski]I wonder how Xojo did it with SQLite. Paul Lefebvre (or someone from Xojo), could you explain how you access the c api(s)?

They wrap the Database API around it, very likely using the Database API in the plugin API. Speaking from extensive experience with this stuff, when it comes to debuggability, you’re really going to prefer to wrap a REST API of the server with an HTTPSocket in Xojo code, rather than have an opaque plugin doing this stuff. For a NoSQL client/server solution, I really don’t see this ending up noticeably slower for your app than “native” client libraries.

if you have spare time (hahahahahahaha) and would like to work on this, I could be easily convinced to help you. Im not an python expert but I know some.


We wrote a plugin