Data model
If you tried to create a database as suggested in our basic tutorial, then your test database now looks like this:
![../../_images/data_model.png](png/data_modeld7b7.png)
Tarantool stores data in spaces, which can be thought of as tables in a relational database. Every record or row in a space is called a tuple. A tuple may have any number of fields, and the fields may be of different types.
String data in fields are compared based on the specified collation rules. The user can provide hard limits for data values through constraints and link related spaces with foreign keys.
Tarantool supports highly customizable indexes of various types. In particular, indexes can be defined with generators like sequences.
There are six basic data operations in Tarantool: SELECT, INSERT, UPDATE, UPSERT, REPLACE, and DELETE. A number of complexity factors affects the resource usage of each function.
Tarantool allows describing the data schema but does not require it. The user can migrate a schema without migrating the data.
To ensure data persistence and recover quickly in case of failure, Tarantool uses mechanisms like the write-ahead log (WAL) and snapshots.