185 похожих чатов

Всем доброе утро. Не мог бы кто-нибудь подсказать по такому

вопросу: есть две БД - рабочая и новая. Новая отличается от рабочей только тем, что в ней присутствует одно дополнительное поле в одной из таблиц и нет никаких данных, в остальном всё идентично. Нужно взять все данные из старой БД и переместить в новую. Как лучше правильно организовать передачу данных (мне пришла в голову идея использовать traverse_backup)? И как правильно "достучаться" из текущего узла до другой БД (она просто в виде копии лежит на диске)?

21 ответов

30 просмотров

делай сырой запрос в старую базу на вычитывание всего множества и сохраняй в хорошо организованном подключении к новой базе

Развернуть бэкап и потом добавить поле было бы куда проще

Δημήτηρ- Автор вопроса
Sergei
Развернуть бэкап и потом добавить поле было бы куд...

Было бы проще, если бы механизм создания полей был стандартный, а тут сделано через erlsom (XML)

Δημήτηρ- Автор вопроса
john conor 
делай сырой запрос в старую базу на вычитывание вс...

А как обратиться к новой БД, если у неё нет своей ноды?

Δημήτηρ- Автор вопроса
Sergei
Что мешает воспользоваться шеллом/gui?

Мешает, что этот функционал надо встроить в готовый код для медиашлюза, и работать это должно по принципу "положил на шлюз БД -> запустил -> само всё обновилось".

> Как лучше правильно лучше и правильно зависит от требований (граничных условий)

Δημήτηρ- Автор вопроса
Иванов
> Как лучше правильно лучше и правильно зависит...

Ну, у меня их нет пока, кроме того, чтобы это в принципе работало. Под "правильностью" я имел ввиду чтобы это был не совсем уж говнокод с т.з. того, как пишут на Erl)

Δημήτηρ
Ну, у меня их нет пока, кроме того, чтобы это в пр...

что начит "говнокод" ведь вопрос сводится к переносу данных в новое хранилище? (т.е. обновление структуры методом переноса). я так понял раз вопрос возник значит сервис нельзя останавливать?

Δημήτηρ- Автор вопроса

Нет, приложение останавливать можно, во всяком случае сейчас нет такого требования. А весь кейс возник сугубо из-за того, что текущая версия кода, которая при обновлении структуры БД всё генерирует заново, работает очень долго из-за слабости процессора. Подсунуть готовую пустую БД и перенести данные должно быть намного быстрее.

Δημήτηρ- Автор вопроса
Иванов
что начит "говнокод" ведь вопрос сводится к перено...

Ну, да. Весь вопрос: как, будучи внутри одной ноды, вытянуть все данные из БД ноды и записать данные в БД, которая просто лежит рядом на диске. И всё)

Δημήτηρ
Нет, приложение останавливать можно, во всяком слу...

как тебе идейка: - читать из новой - при отсутствии данных - делать запрос в старую - записывать в новую - удалять из старой - удалить старую при опустении - профит

ну дык напиши функцию которая поле добавит

Δημήτηρ- Автор вопроса
john conor 
ну дык напиши функцию которая поле добавит

Для этого пришлось бы XML парсить, что противоречит самой идее использовать генерацию на основе XML)

Δημήτηρ- Автор вопроса
john conor 
делай сырой запрос в старую базу на вычитывание вс...

Раскройте секрет: как? Я попробовал уже вариантов 5 точно, ни один из них не позволяет просто прочитать все записи без фильтра, даже код из книжки Армстронга

Δημήτηρ- Автор вопроса
Δημήτηρ
Раскройте секрет: как? Я попробовал уже вариантов ...

Если кому интересно, то вот один из рабочих вариантов: read_data() -> TabNames = mnesia:system_info(tables), SelectAll = fun(Tables, Records) -> Handle = fun(_, [], Recs) -> Recs; (Fun, Tabs, Recs) -> [First | Rest] = Tabs, New = mnesia:dirty_select(First, [{'_', [], ['$_']}]), Fun(Fun, Rest, [New | Recs]) end, Handle(Handle, Tables, Records) end, Data = SelectAll(TabNames, []), Data.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта