Database / Mnesia basics Interview questions
What are the Mnesia table types (set, ordered_set, bag)?
The type option on mnesia:create_table/2 controls how a table handles keys and
ordering, mirroring the same distinction ETS makes.
| set | ordered_set | bag |
| Unique keys; one record per key. Default type. | Unique keys, kept in a sorted order for efficient range-style traversal. | Keys may repeat; multiple distinct records can share the same key. |
mnesia:create_table(tag, [{attributes, [item_id, tag_name]}, {type, bag}]). %% one item_id can have many tag_name entries
set is the right default for most tables where each key genuinely identifies one row.
bag fits naturally modeled one-to-many relationships (an item with multiple tags) without a
separate join table. ordered_set is chosen specifically when you need to iterate keys in sorted
order efficiently.
More Related questions...