Without knowing more about what your specific application does, it's hard (for us) to say whether a database is the right choice. However, there are some rules of thumb that you can use to help steer your decision.
A database may be a good choice when:
- The data may be used by multiple users.
- When concurrent activity is possible that must be correctly stored.
- When the data collected does not all need to be loaded into memory at once.
- When you wish to be able to query or report on data in complex ways.
- When you want to have transparency into the data being stored using standard tools.
- When changes are mostly localized rather than requiring the entire datastore to be rebuilt.
- When your data lends itself to a relational (rather than say a hierarchical representation).
A database may not be the best choice when:
- You only service a single user.
- There is little concurrent activity, and the entire data model must be recreated when saving changes.
- When there will be very little data, and it will be loaded into memory all at once.
- When you data is hierarchical or difficult to model relationally.
- When your application is document-oriented, and documents (files) will be sent to other users.
- When there is a significant amount of binary data interspersed in the data your storing.
- When you want to avoid dependencies to third party tools or services.
- When the structure of your data model is likely to change frequently.
These are all rules of thumb ... no single condition is going to dictate whether to use a database or not. You must examine all of the considerations, and decide whether using a database will give you sufficient benefit - or not.
In many environments, (such as iPhone, for example) there is a built-in database layer available directly on the platform. There are also tools (like NSCoreData) which help you overcome the Object-Relational Modeling (ORM) impedence mismatch. In such cases, it may make a lot of sense to use a database ever for very simple data storage.
There are also a number of open source data persistence layers (NHiberante, DB4O, and others) that help simplify using a database as a persistence store ... which, if you can use them, can shift the equation in favor of using a database.
A database can substantially simplify the development of your application when you need to support queries or search functionality. Relational databases support a query language (SQL), which moves the effort of identifying and retrieving results from the database much easier. Letting the database do the heavy lifting can be a significant time saver - as databases are specifically designed to perform query operations correctly and efficiently. However, this comes at the cost of a well-designed relational data structure - which you must create.
One significant consideration, is whether users will share the data that they create/consume using your application. If your application is more document oriented (think Word, Excel, Powerpoint), then a file-based serialization model may be more appropriate. If your application's data will not be shared - then a database may make sense.
Another significant factor is how open you want your data to be. Databases store information in well-defined structures (tables), and this makes it easier for you (and your users) to directly access and inspect the data. Storage formats like XML, also allow this, but to a somewhat lesser extent.