Base de datos integrada basada en servidor

I'm trying to figure out which database would suit my needs. My c++ project need a database that will be running on devices sold to customers. Mainly it would only log data and events to a database on local SSD disk. Write speed is the most important as logging frequency can be up to 1000Hz (1 write per 1ms). It must be possible to access data remotely from other devices to make graphic visualisations of data. I have tested sqlite with 3rd party server, mysql and postgres. Postgres seems to be quite slow compared to others. As I've read Postgres will become good if concurrency will increase, but in my case concurrency is and will be quite low. I'm wondering is there any other database for such needs. It also feels that mysql and postgres will be a litte overkill for such requirements. Any suggestions?

preguntado el 31 de julio de 12 a las 11:07

It's not so much embedded device actually - running atom processor and having 1 GB of RAM + SSD disk. Also the database code should be cross-platform. SQLite's concern is that it doesn't have a licence free reliable server. Postgres would be fine, as it's open source and free, but as far as I have tested it's way too slow on writes compared to SQLite or MySQL. Could it be so? MySQL would be a good option if it would only be free to use. As I've understood the server part is free to use but the official connectors are licenced. And as I need a C++ connector there are none in the community list. -

4 Respuestas

PostgreSQL is an enterprise quality database, and not fit for embedded devices. MySQL while smaller will also be a tight fit in an embedded device. SQLite is the most common, and is widely used in embedded devices, even quite small.

Respondido 31 Jul 12, 11:07

Go for sqlite because your requirement states that you App will be running on DEVICES and mostly I guest they are mobile devices and almost all mobile devices support sqlite.... so go for it...

Respondido 31 Jul 12, 11:07

Consider BerkeleyDB. It is a small-footprint embedded DB with a big commercial backer if you needed support, etc. There are open source versions as well as commercially licensed ones. There's no support for SQL querying, but unless you're doing quite complex relational queries this should not be a problem. Concurrency support is excellent, though initial database configuration tends to be awkward.

There's a Microsoft-only alternative in the form of the Extensible Storage Engine, that's free and available on most versions of Windows. There are various other 'DBM'-like simple embedded databases out there, so long as you don't feel you need SQL.

You might also consider an in-memory 'NoSQL'-style database; something like Redis will be very performant.

Respondido 31 Jul 12, 11:07

RDM integrado may be a good fit for you. I'm with Raima and this product allows you to access data remotely and you can utilize the in-memory or a hybrid on-disk/in-memory database capabilities (www.raima.com/in-memory-database) if you need to. What could be useful for you in this particular case is that RDM products can be used together to manage data between embedded, mobile, desktop or server devices. This can be easily setup through our products, RDM Embedded, RDM Mobile, RDM Workgroup and RDM Server.

If you want to test performance of our database quickly before downloading the full product, go to our Database Performance Popcorn Samples.

Respondido 01 ago 12, 01:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.