MallaDocs

Native tables

A real SQL database per site, with a schema designer, a data browser and row rules.

User guide

Every site has its own SQL database for app data. It lives next to your site on the edge, scales to zero and is isolated from every other site.

CMSContent your team writes in the editor. Drafts, publishing, static pages.
Native tablesApp data visitors and workflows write: orders, bookings, profiles. Live, no publish step.

Design a table

Open the Tables workspace and press New. Add columns in Schema and save. Column types are text, number, boolean, date, json and reference (another table’s row). Every row also has id, createdAt and updatedAt. Mark columns you filter on as indexed.

Browse and edit rows

The Rows view is a data browser: add, edit and delete rows, and load more as you scroll. Edits made here skip row rules, since you are the owner.

Row rules

Rules decide what visitors and workflows may read and write. Each is an expression with row and user in scope. A row is hidden when the read rule is false; a write is refused when the write rule is false for the stored row or the new one.

js
// orders: visitors see and change only their own rows; admins see all
read:  row.userId == user.id || user.roles.includes('admin')
write: row.userId == user.id

Use tables in workflows

Server workflows read and write with Query table (filters with eq, neq, lt, lte, gt, gte, contains, isNull, notNull, plus a cursor), Get row, Insert row, Update row and Delete row. Type the table’s name or id in their Table parameter. Every write can trigger table-event workflows.

Visitors

The Visitors view lists the people who signed up on your site, marks unverified emails, and lets you define site roles and assign them. See Visitor accounts.

Limits

The total rows per site depend on the site plan. For very large datasets, connect an external database through an integration instead.