[odb-users] Performance and another question
Adnan RIHAN
axel50397 at gmail.com
Tue Jun 2 04:56:53 EDT 2015
Hi Andrew,
I’m not yet working with intensive tasks, so I can’t provide you my personal experience.
However, I think the choice of a DB backend depends on what type of data you’re dealing with, their size, how often, concurrency and the usage of the project.
For example, if you’re making a simple Cash register app (as I’m on, currently), you’re dealing with simple little values (short strings and integers), multiple time a day, no concurrency (except if you have multiple cashiers) and the DB expanding linearly with time. I think sqlite is the best for this kind of project, it’s light, portable, and can handle a huge quantity of data. So maybe, you will never have to care about the database.
I can’t find another example for non in-process DB, but basically, if you need concurrency, caching, speed, huge complexity (constantly joining many many tables) and if you know the data will expand exponentially, then you’ll need a server. The server (apart from the ORM) is capable of expanding (Clustering/NAS/SAN/bigger disks), caching (if you’re joining a lot but accessing the same joins multiple times a day), and can be anywhere (accessed via network).
These are few details I think about for the choice of a type of backend. Then, I look around for some benchmarks to see which would be the best for my architecture. Sqlite is in-process, MySQL is a server but can also be loaded as an embedded server (http://www.mysql.com/oem/), and so on.
- SQLite, when to use: https://www.sqlite.org/whentouse.html
- MySQL, known enough
- MariaDB, comparison chart: https://mariadb.com/products/mariadb
- And then you have the NoSQL databases (plus DB like Oracle, SQL Server, ...), but I’ve never worked with them.
--
Cordialement, Adnan RIHAN.
Directeur-Gérant de Eolis-Software, société de services informatiques.
GPG: 5675-62BA (https://keybase.io/max13/key.asc)
-> Si vous n'utilisez pas GPG mais souhaitez quand même m’envoyer un e-mail chiffré: (https://encrypt.to/0x567562BA).
On 2 juin 2015 at 10:23:32, Andrew Cunningham (andrew at a-cunningham.com) wrote:
I am evaluating ODB as a replacement for an 'abandon-ware' commercial OODB.
I have a question regarding performance that other ODB users might be able
to help with
If we were looking for the best performance when working with lots of data
for a single user ( single process/multiple threads) on a Windows
workstation what would you suggest as the best SQL DB option ( i.e. SQLIte
vs MySQL vs. Postgres etc)
Obviously I think that most people would suggest SQLite as you are writing
‘in process’ with no external communication to a server process. However,
when working with our existing OODB vendor we got much suprisingly better
performance from using a 'local' server vs. ‘in-process” as the server
process could perform disk operations without blocking the client process.
The server client communication was over shared memory not network sockets
when both were on a local machine.
One more question: What would people recommend for modeling a ‘graph’ as a
persistent data type in odb. I use boost::graph currently. I am trying to
think of a way to do it in ODB is not too awfully slow/clumsy/messy. Just
wondering if it has been done before.
Andrew
More information about the odb-users
mailing list