2

I am requesting ideas for what database software I should use for a personal project I want to create and maintain for the next 20+ years. It will track my investment portfolio.

I want to create an .exe with C++ using a Qt library (A combo I am already experienced with).

For the database though I am not sure. I wonder if even something like SQL Server Express would be overkill. I'm intrigued by SQL Lite. I anticipate about 60 transactions (rows) per year, so I'm not talking about millions of records.

I want the whole front end / back end to be fairly easy to transfer every time I upgrade to a new computer, every 5 years or so.

Any ideas?

  • 2
    Should the database be embedded, or running as a server? Does it need to be free? Open source? Supported? Your software is Windows-only? – Nicolas Raoul Jun 19 '15 at 4:50
  • No ideas? Just more questions? – Wes Jun 20 '15 at 16:54
  • 2
    Yes, because the question is too broad right now, we can't provide a useful answer without more details. – Nicolas Raoul Jun 22 '15 at 4:22
  • Why not take software which already exists? Why are you willing to spend very much time into building something (Stock Portfolio software) that already exists? I think you reach your goal faster if you take an open source stock portfolio software and enhance it. To answer you question: I like postgres and for the front-end I use Django (Python). – guettli Dec 1 '15 at 6:53
6

Text Files

If simply tracking a few dozen transactions per year, you don't need a database. Just write to text files, "a pile of files".

Tab-delimited or CSV (comma separated values) are both commonly used.

Writing CSV/tab-delimited files is not difficult. But you may want to look for a library to assist anyways, such as Apache Commons CSV for Java.

Learn about file locking and concurrency issues. Consider writing a fresh file after which you delete or move/hide the old.

SQLite

SQLite is indeed another good choice. The creator's intent for SQLite is to be one step up from using text files. It is not meant to be a serious database contender, and so it has limited features such as few data types. SQLite and its file format are designed for portability, even across different kinds of CPU processors.

Your case sounds like a good fit.

Database

SQLite is an excellent product, hugely useful for countless apps on many platforms. But keep in mind the "lite" part.

To quote D. Richard Hipp, the creator of SQLite, from his keynote address (video) at PGcon 2014:

“SQLite is not a replacement for PostgreSQL.
SQLite is a replacement for fopen().”

For serious heavy-duty work, such as enforced data types, huge number of rows, complicated joins, fancy SQL, large amounts of memory, and so on, consider using a database other than SQLite.

Comparison Chart

Here is a very subjective comparison chart of some various databases. Quite arbitrary and approximate, not drawn to any scale. Based on my own experience. Meant only to give some basic orientation to newbies (not to start any flame wars).

The point here is that SQLite gives you much more power and saves you much programming with a relatively small bump in hassle over plain files. But for serious database work, consider the products other than SQLite.

Subjective comparison chart of various databases, comparing "easiness" (complexity, learning, practicality) versus "power" (features and flexibility.

  • Upvoted! The only problem i have in this solution is I need concurrent writes, I am using Python celery to fetch data from APIs in parallel and want to be able to update the same file/database several times – PirateApp May 10 '18 at 6:19
  • 1
    @PirateApp If your needs are relatively simple, SQLite does have some support for currency discussed here. If you have hardcore enterprise-level needs (high-volume or mission-critical), go with Postgres. See list of Python drivers for Postgres. – Basil Bourque May 10 '18 at 6:29
  • thanks for the reply :) it has concurrent reads but am afraid writes only give a database locked error from more than one proceses/threads – PirateApp May 10 '18 at 6:31
  • 1
    @PirateApp You should post your own Question with your particular needs. – Basil Bourque May 10 '18 at 6:37
  • softwarerecs.stackexchange.com/questions/50096/… here you go :) thanks for your answer in advance – PirateApp May 10 '18 at 6:42

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.