Search code examples
databasefileflat-fileplaintext

What are the advantages and disadvantages of using a database over plain files?


I couldn't find the advantages and disadvantages of using a database over plain files. Would you please help me?


Solution

  • A few database advantages:

    • Highly optimized (indexing, query optimization)
    • Stores many different types of data, generally with type-safety
    • Prebuilt abstractions (SQL, database access layers)
    • Relational integrity (foreign key constraints, etc)
    • ACID (Mostly having to do with data integrity, check Wikipedia...)
    • Interactive queries (for debugging, running ad-hoc reporting, etc)

    Plain text doesn't have much except for the most dead-simple application

    • Can inspect on-disk format
    • Extremely simple in every way
    • No need for a server or linked library, etc.

    Basically, if you are doing anything other than the most simple data manipulation (especially if you ever expect to have concurrent modifications, complex relations, multiple users, or even just a lot of data) it's well worth getting used to using a database. PostgreSQL is my favorite, although I'm sure you'll find conflicting views on that one :)