---
url: /technical/datastore.md
description: >-
  The Datastore area browses the tables held in the instance's Internal
  Datastore, and the rows inside them, without writing SQL.
---

# Manage Datastore

The **Datastore** area browses the instance's [Internal Datastore](/technical/modlr-architecture#internal-datastore) directly - the tables it holds, and the rows inside them. It's the read/write counterpart to [Tables](/technical/tables), which is where a table's *structure* is defined.

![The Manage Datastore page, annotated to show the schema browser, the table listing and the row grid](/manage-datastore.png)

Two selectors sit above the grid:

| Control | Purpose |
| :--- | :--- |
| **Schema browser** | Which datastore to read - `Internal Datastore` for the database that ships with every instance. |
| **Table listing** | Which table within it, named `schema.table` (e.g. `datastore.sales`). |

Below them, the selected table's rows are shown a page at a time, with **Filter** and **Sort** controls and an **Actions** menu for operating on the rows you've selected.

## When to use it

This is the place to confirm what a load actually produced. When a [Process](/technical/creating-processes) has staged rows into a [Table](/technical/tables) and the resulting Cube numbers look wrong, the question is usually whether the rows arrived as expected - and this shows them without writing a query or connecting an external client.

For anything beyond inspection, the other routes are better suited:

* **Reading and writing rows in bulk** - the `datasource.*` functions from a Process. See [Tables](/technical/tables#reading-and-writing-rows).
* **Surfacing datastore data to end users** - the [SQL Table](/card-guides/sql-table) and [SQL Trigger](/card-guides/sql-trigger) card components.
* **Querying from outside MODLR** - see [Accessing MySQL Directly](/technical/accessing-mysql-directly) and [Accessing MySQL via Gateway](/technical/accessing-mysql-via-gateway).

::: warning Rows here are live
The grid edits the underlying database directly, with no model-level validation in between. A row changed here is changed for every Card, Custom Page and Process that reads that table.
:::

## Related

* [Tables](/technical/tables) - defining the tables this browses
* [Datasources](/technical/datasources) - connecting to databases outside MODLR
* [Accessing MySQL Directly](/technical/accessing-mysql-directly) - external access to the same data
