mallard alternatives and similar packages
Based on the "Database" category.
Alternatively, view mallard alternatives based on common mentions on social networks and blogs.
-
erd
Translates a plain text description of a relational database schema to a graphical entity-relationship diagram. -
persistent-redis
Persistence interface for Haskell allowing multiple storage methods. -
acid-state
Add ACID guarantees to any serializable Haskell data structure -
postgresql-simple
Mid-level client library for accessing PostgreSQL from Haskell -
HDBC-session
This repository includes a joined query generator based on typefull relational algebra, and mapping tools between SQL values list and Haskell record type. -
esqueleto
Bare bones, type-safe EDSL for SQL queries on persistent backends. -
groundhog
This library maps datatypes to a relational model, in a way similar to what ORM libraries do in OOP. See the tutorial https://www.schoolofhaskell.com/user/lykahb/groundhog for introduction -
hw-kafka-client
Kafka client for Haskell, including auto-rebalancing consumers -
mysql-simple
A mid-level client library for the MySQL database, intended to be fast and easy to use. -
postgresql-simple-migration
PostgreSQL Schema Migrations for Haskell -
direct-sqlite
Low-level binding to SQLite3. Includes UTF8 and BLOB support. -
vcache
large, persistent, memcached values and structure sharing for Haskell -
vcache-trie
large, persistent, memcached values and structure sharing for Haskell -
dbmigrations
A library for the creation, management, and installation of schema updates for relational databases. -
postgresql-tx
[Moved to: https://github.com/Simspace/postgresql-tx] -
postgresql-typed
Haskell PostgreSQL library with compile-time type inference -
ampersand
Build database applications faster than anyone else, and keep your data pollution free as a bonus. -
postgresql-orm
An Haskell ORM (Object Relational Mapping) and migrations DSL for PostgreSQL. -
persistent-database-url
Parse DATABASE_URL into configuration types for Persistent
ONLYOFFICE Docs — document collaboration in your environment
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of mallard or a related project?
README
Mallard
No frills migration for relational databases. Usable as either an application or library.
Mallard offers the following key features:
- Dependency resolution with circular reference prevention.
- Native migration scripts.
- Accretive implementation. Purposeful omission of "down migrations."
Installation
There are currently no packaged distributions for Mallard, though they are coming soon. We were added to Stackage on Sep 21, 2017. So we just might make it into the LTS-9.6. Packaged distributions for Homebrew and Debian will be coming along soon. Currently, we don't know if there is any demand for Windows or RPM distribution, let us know if there is.
Supported Databases
- PostgreSQL
Application Mini-Manual
migrator - applies PSQL database migrations.
Usage: mallard ROOT [--host ARG] [--port ARG] [--user ARG] [--password ARG]
--database ARG [-t|--test]
Apply migrations to a database server.
Available options:
--host ARG Server host (default: "127.0.0.1")
--port ARG Server port (default: 5432)
--user ARG Username (default: "postgres")
--password ARG Password (default: "")
--database ARG Database name
-t,--test Run tests after migration.
-h,--help Show this help text
Migration Structure
Mallard is designed to use a single root folder for all the migrations that define a database. Within this folder any structure is permitted. However, we recommend something like the following.
- root
- tables
- person.sql
- phone.sql
- views
- person_with_phone.sql
- functions
- add_phone.sql
Wherein the migrations related to a given entity are kept in a single file. One such file might look like the following.
-- #!migration
-- name: "tables/phone",
-- description: "Phone numbers attached to a person.",
-- requires: ["tables/person"];
SET search_path TO contact;
CREATE TABLE phone(
id BIGSERIAL NOT NULL,
owner_id bigint NOT NULL,
digits text NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (owner_id) REFERENCES person(id)
);
-- #!migration
-- name: "tables/phone/name",
-- description: "Add name column to phone number.",
-- requires: ["tables/phone"];
SET search_path TO contact;
ALTER TABLE phone ADD COLUMN name text;
Mallard is perfectly happy to accept as many migrations in a single file as you are willing to put there. However, there are a few rules you will have to follow.
- The SQL comments in which a migrations header are located must be contiguous.
- Each migration or test must begin with
#!migration
or#!test
. - Each header field must end with
,
, or if it is the last field a;
.
These rules allow the header to be fully defined in the comments of an otherwise normal SQL file.