1

I am developing a Windows desktop application (.exe) for billing and inventory management using NetBeans. The application will run on multiple systems (10 - 12 on average), all connected in a wired or wireless LAN and not connected to the internet. All applications on the different computers will communicate to a single common database that is also in the LAN (and not connected to the internet). Since it is a billing application we can expect concurrent read/write operations from many instances at a given time.

I am looking for a good database service that I can use for the above mentioned requirement. The needs-analysis is given below:

  1. The database will be used by a retail shopkeeper that use the application to generate bills/invoices and maintain inventory.
  2. The modification of data or updation of the database will happen continuously, probably for tens of thousands of times a day.
  3. The direct user ie. the retail shopkeeper do not know anything about databases or softwares in general. The IT support will be taken care of by me.
  4. The computers are basic windows 2007 or earlier systems with not-so-high hardware specs. They will also be NOT connected to the internet.
  5. The database should be able to manage concurrent read/write operations without delay, errors or loss of data.
  6. There should be a good level of security of the data in the database.
  7. Preferably a database that is free or at least is not so expensive.

Please help me with suggestions of database that I can use in this scenario. Thanks in advance.

P.S.: I am a novice developer, sorry for any half-baked or unclear information.

0

Sounds like a perfect match for a traditional RDBMS (Relational Data Base Management System). There are quite a few very good open source alternatives to choose from, where PostgreSQL and MySQL probably are the most popular. You can also consider MariaDB, which is a non-Oracle fork of MySQL by the creator of MySQL.

PostgreSQL is perhaps the most traditional and conservative while MySQL/MariaDB is more flexible. Both have good performance, but excels in slightly different areas (There is an article out there describing how Uber migrates from the one to the other, and then back again, explaining a lot of the differences between the two.)

To ensure consistency and integrity the database must comply to the ACID principles (described on Wikipedia and other places). Both will do this, but it is possible to configure MySQL in such a way that it will not be fully ACID compliant. On the other hand MySQL has more options when it comes to replication and various storage engines.

My personal preference is Postgresql, but you will do great with either.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.