Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rabbitmq/khepri_mnesia_migration
Tools to migrate between Mnesia and Khepri
https://github.com/rabbitmq/khepri_mnesia_migration
database elixir elixir-library erlang erlang-library migration
Last synced: about 2 hours ago
JSON representation
Tools to migrate between Mnesia and Khepri
- Host: GitHub
- URL: https://github.com/rabbitmq/khepri_mnesia_migration
- Owner: rabbitmq
- License: apache-2.0
- Created: 2022-12-02T12:02:23.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-11-15T15:19:31.000Z (about 2 hours ago)
- Last Synced: 2024-11-15T15:21:19.913Z (about 2 hours ago)
- Topics: database, elixir, elixir-library, erlang, erlang-library, migration
- Language: Erlang
- Homepage: https://rabbitmq.github.io/khepri_mnesia_migration/
- Size: 337 KB
- Stars: 6
- Watchers: 10
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE-Apache-2.0
Awesome Lists containing this project
README
# `khepri_mnesia_migration`: Mnesia⬌Khepri migration toolkit
[![Hex.pm](https://img.shields.io/hexpm/v/khepri_mnesia_migration)](https://hex.pm/packages/khepri_mnesia_migration/)
[![Test](https://github.com/rabbitmq/khepri_mnesia_migration/actions/workflows/test.yaml/badge.svg)](https://github.com/rabbitmq/khepri_mnesia_migration/actions/workflows/test.yaml)
[![Codecov](https://codecov.io/gh/rabbitmq/khepri_mnesia_migration/branch/main/graph/badge.svg?token=R0OGKZ2RK2)](https://codecov.io/gh/rabbitmq/khepri_mnesia_migration)`khepri_mnesia_migration` is a library providing helpers to migrate data
between the Mnesia and Khepri databases.Currently, only the migration from Mnesia to Khepri is supported.
## Project maturity
`khepri_mnesia_migration` is still under active development and should be
considered *Alpha* at this stage.## Documentation
* A short tutorial in the [Getting started](#getting-started) section below
* [Documentation and API reference](https://rabbitmq.github.io/khepri_mnesia_migration/)## Getting started
### Add as a dependency
Add `khepri_mnesia_migration` as a dependency of your project:
Using Rebar:
```erlang
%% In rebar.config
{deps, [{khepri_mnesia_migration, "0.7.1"}]}.
```Using Erlang.mk:
```make
# In your Makefile
DEPS += khepri_mnesia_migration
dep_khepri_mnesia_migration = hex 0.7.1
```Using Mix:
```elixir
# In mix.exs
defp deps do
[
{:khepri_mnesia_migration, "0.7.1"}
]
end
```### Synchronize cluster members
To ensure a Khepri store has the same members as the Mnesia cluster, use
`mnesia_to_khepri:synchronize_cluster_membership/{0,1}`:```erlang
mnesia_to_khepri:synchronize_cluster_membership(StoreId).
```### Copy Mnesia tables to a Khepri store
You can copy Mnesia tables records to a Khepri store using
`mnesia_to_khepri:copy_tables/{2,3}`. It takes a converter module which takes
care of actually processing each Mnesia records (if needed) and storing them in
the Khepri store. A converter module called
`mnesia_to_khepri_example_converter` is provided for common use cases and as an
example.```erlang
mnesia_to_khepri:copy_all_tables(mnesia_to_khepri_example_converter).
```## How to build
### Build
```
rebar3 compile
```### Build documentation
```
rebar3 edoc
```### Test
```
rebar3 xref
rebar3 eunit
rebar3 ct --sname ct
rebar3 as test dialyzer
```## Copyright and License
© 2022-2024 Broadcom. All Rights Reserved. The term "Broadcom" refers to
Broadcom Inc. and/or its subsidiaries.This work is dual-licensed under the Apache License 2.0 and the Mozilla Public
License 2.0. You can choose between one of them if you use this work.SPDX-License-Identifier: Apache-2.0 OR MPL-2.0