# What is AshPostgres?
AshPostgres is the PostgreSQL `Ash.DataLayer` for [Ash Framework](https://hexdocs.pm/ash). This is the most fully-featured Ash data layer, and unless you need a specific characteristic or feature of another data layer, you should use `AshPostgres`.
> ### What versions are supported? {: .info}
>
> Any version higher than 13 is fully supported. Versions lower than this can be made to work, but certain edge cases may need to be manually handled. This becomes more and more true the further back in versions that you go.
Use this to persist records in a PostgreSQL table or view. For example, the resource below would be persisted in a table called `tweets`:
```elixir
defmodule MyApp.Tweet do
use Ash.Resource,
data_layer: AshPostgres.DataLayer
attributes do
integer_primary_key :id
attribute :text, :string
end
relationships do
belongs_to :author, MyApp.User
end
postgres do
table "tweets"
repo MyApp.Repo
end
end
```
The table might look like this:
| id | text | author_id |
| --- | --------------- | --------- |
| 1 | "Hello, world!" | 1 |
Creating records would add to the table, destroying records would remove from the table, and updating records would update the table.