Как стать автором
Обновить

Комментарии 18

> Если посмотреть на любую SQL базу данных, то добавление поля — элементарная операция.

У меня есть таблица весом 18 гигов с индексом 13 гигов. Alter table там — «элементарная операция». Остановит работу на полдня примерно.

А по поводу мнезии, тыкну пальцем в небо — реплицировать на другой хост, перенести туда нагрузку (апликацию), снять нагрузку со старого хоста, сделать все нужны операции, вернуть нагрузку обратно.
У вас какая-то неправильная БД. У нас Oracle, десятки гигабайт данных, добавление поля в таблицу редко занимает больше нескольких минут, чаще секунды
Так автор заявлял про любую SQL-базу. У меня любая — MySQL.

Придираться можно бесконечно. Вы не на буквы смотрите, а на смысл. А смысл в том, что изменение схемы данных в mnesia — это достаточно непростая операция по сравнению с большинством SQL-баз, и автор описывает, как его обслуживать.

Проблемы конкретной реляционной СУБД тут обсуждать бессмысленно
Ну видимо если измерять максимальную скорость автомобиля при максимальной допустимой нагрузке, то можно поймать автора характеристик автомобиля на лжи. мир.

Но интересно — сколько займут мероприятии по добавлению полей в таблице Mnesia на 18 гиг?
вы просто посмотрите сколько займёт старт системы после некорректного шатдауна хотя бы с 300 метрами данных. потом с гигом. если не дошло — то еще с двумя. дальше, думаю, не понадобится.
При старте мнезия строит индексы, это очень медленно, и судя по графику загрузки ядер на цпу, идёт в один поток. 60ти мб база на двухядерном цпу обычной машинки запускается около часа. Т.е. запускается она быстро, но одно ядро забито под 100% около часу, пока не построятся индексы. Пичаль.
не, это не индексы. это dets восстанавливается.
На MS SQL В 40 гибайтную таблицу легко и не принужденно добавлял поля. Конечно есть задумчивость сервера несколько минут, но не полдня. И никаких дополнительных манипуляций на живой работающей системе. По сравнению с mnesia — это элементарно.

А по предложенному варианту с репликацией — я не понимаю что делать после того как на старом хосте трансформирую таблицу. Как они синхронизируются со старой версией которая крутится на новом хосте? Пока я трансформирую таблицу на одном хосте в реплике на другом происходят изменения и они все в старой версии записей производятся. Как mnesia это разрулит?
> я не понимаю что делать после того как на старом хосте трансформирую таблицу. Как они синхронизируются со старой версией которая крутится на новом хосте?

Да, этот момент я как-то пропустил :)
Бесплатный master-master в couchdb расслабляет, после него на другие базы смотреть не хочется.

Можно пойти по длинному страшному пути, типа накапливать изменения, пока будет обновляться старый хост, а потом изменения применить к нему.
не знаю, а что я делаю не так? я пишу код трансформации в апгрейде. соответственно на момент апгрейда происходит суспенд, апгрейд таблицы, ансуспенд. так как таблицы все небольших размеров — проблем не доставляет, даже дефолтного таймаута в 5 секунд достаточно.

а если кто-то попытается мне тут сказать что таблицы могут быть и большие, то он огребает себе личных проблем много и надолго. мнезия не работает с большими объёмами. никак. никогда. даже не пытайтесь.
где-то об этом можно почитать? и какова граница «большого объема»?
зависит от процессора, скорости винтов, объёма памяти, допустимого времени даунтайма, вероятности сбоя.
проще всего — протестировать. мой опыт говорит о том, что 100 мегабайт это уже много.
runtime данные — в mnesia. весь архив и всю аналитику — выкидывать наружу. в postgresql хотя бы.
Не используйте Mnesia. Не надо. Это было актуально, когда ничего другого не могло быть в кластере. Сейчас же куча вариантов — от редиса до CouchBase (membase).
mnesia можно и нужно использовать — для нативных туплов и большой скорости работы (по сравнению с внешним решением) + гарантия атомарности в пределах кластера + много еще чего.
но это _только_ для данных нужных в рантайме вот прямо сейчас. как только данные утряслись — выкидывать в хранилища предназначенные для хранения и обработки.
mnesia операционно нестабильна; кластер разрушается от высокой (неожиданной) нагрузки; нет вменяемых средств для реструктурирования и мейтенанса кластера для тех, кто не слишком знает эрланг, etc. Это всё перечёркивает большую скорость работы. Под кэш можно и мемкеш/couchbase использовать.
А по подробней или где почитать об этом можно?
Мы использовали и используем Mnesia в Echo (aboutecho.com), но в основном недовольны. Почитать о нашем опыте пока нигде нельзя.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории