Правильный ответ такой: модель данных и гарантии целостности не связаны примерно никак.
Парадигма работы с данными тут ни при чём вообще: вы можете как в реляционной БД поменять одну строку или несколько строк (в одной таблице или в разных), так и в документной БД поменять один документ или сразу несколько (в одной коллекции или в разных).
Что действительно имеет значение для «нюансов» — это количество хостов, на которых принимается решение о завершении транзакции. В монолитных БД (Oracle, PostgreSQL, Db2...) таких нюансов практически не осталось, в распределённых БД они действительно есть и всегда будут.
Только вот «распределённая» и «документная» — это не синонимы, они описывают разные аспекты СУБД.
Есть монолитные реляционные (это все знают), есть распределённые документные (Mongo, Raven и т. д), есть монолитные нереляционные (BerkeleyDB, например), а есть распределённые реляционные (Cockroach, Fauna, Yugabyte...) И вот в третьей категории нюансов нет, несмотря на реляционность, а в четвёртой — есть.
соблюдение ACID‑гарантий в NoSQL‑БД всегда сопровождается оговорками и условиями.
Вы не могли бы чуть-чуть развернуть свою мысль? Каким образом модель данных (реляционная, документная, и т. д.) влияет на механизмы соблюдения целостности (ACID)?
Вопрос со звёздочкой: вот в PostgreSQL добавилась поддержка JSON, то есть прямо-таки ровно то, что делает NoSQL СУБД. Какие оговорки и условия, касающиеся ACID, появились в PostgreSQL вследствие добавления этой поддержки?
Хороший способ, он значительно снижает вероятность потери данных, но не устраняет её полностью. Чтобы способ сработал, надо, чтобы сервер бизнес-логики не умер одновременно с ведущим сервером БД.
«Придумала» и «реализовала» — разные вещи. Ingres действительно появился раньше, чем System R, но Кодд, который собственно и придумал прикрутить реляционную алгебру к управлению данными, как ни крути, был сотрудником IBM.
— Гражданин Петров обвиняется в самогоноварении, т. к. у него в сарае найден самогонный аппарат. Петров, признаёте ли вы себя виновным? — Да что уж там, судите и за изнасилование! — А кого вы изнасиловали? — Да никого, но аппарат-то в наличии!
Нет, во главе новых стран становятся не вайшьи (торговцы), а кшатрии (воины) и брахманы (жрецы, поэты). Одним их самых известных государств-стартапов в истории считается Республика Фиуме (про неё даже Маяковский двустишье написал). Почитайте, очень забавная история. Особенно когда наблюдаешь её издалека.
одна забытая сессия с открытой транзакцией останавливает очистку для всех.
Ну почему же, тот undo, который относится к транзакциям, начавшимся позже и завершившимся раньше, вполне можно чистить. В этом случае длинная транзакция может наткнуться на строки, для которых не существует версии, актуальной на момент её начала. Но это лучше, чем держать ради неё undo (imho, разумеется)
выросшая строка переезжает в новый слот, а старый помечается мёртвым и ждёт возврата. Это уже не MVCC, а механика страниц с записями переменной длины — от неё не свободны ни InnoDB, ни Oracle (row migration)
У Oracle строки мигрируют только если меняется ключ секционирования. Если это обычная таблица, то в старой странице её корень остаётся навечно (до ALTER TABLE ... MOVE), и индекс указывает на корень. А корень в свою очередь указывает на то место, где лежат настоящие данные. Это явление называется chained rows.
Волна возмущения прокатилась по российским соцсетям в связи с блокировкой «Макса» в AppStore. «Чего ж вы так долго ждали!» — пишут разгневанные пользователи.
Написано хорошо, но вот автоматика EKF как-то резко снижает градус пафоса. Если покупаешь не по 44-ФЗ, а для себя, лучше всё-таки выбрать ABB, Legrand или хотя бы Schneider :)
Для УЗО номинал — это всего лишь максимальный ток, можно ставить с избытком. Всё равно срабатывает оно от утечки. Вот автомат с избытком ставить уже нельзя.
Вы ответили длинно и не очень содержательно.
Правильный ответ такой: модель данных и гарантии целостности не связаны примерно никак.
Парадигма работы с данными тут ни при чём вообще: вы можете как в реляционной БД поменять одну строку или несколько строк (в одной таблице или в разных), так и в документной БД поменять один документ или сразу несколько (в одной коллекции или в разных).
Что действительно имеет значение для «нюансов» — это количество хостов, на которых принимается решение о завершении транзакции. В монолитных БД (Oracle, PostgreSQL, Db2...) таких нюансов практически не осталось, в распределённых БД они действительно есть и всегда будут.
Только вот «распределённая» и «документная» — это не синонимы, они описывают разные аспекты СУБД.
Есть монолитные реляционные (это все знают), есть распределённые документные (Mongo, Raven и т. д), есть монолитные нереляционные (BerkeleyDB, например), а есть распределённые реляционные (Cockroach, Fauna, Yugabyte...) И вот в третьей категории нюансов нет, несмотря на реляционность, а в четвёртой — есть.
Вы не могли бы чуть-чуть развернуть свою мысль? Каким образом модель данных (реляционная, документная, и т. д.) влияет на механизмы соблюдения целостности (ACID)?
Вопрос со звёздочкой: вот в PostgreSQL добавилась поддержка JSON, то есть прямо-таки ровно то, что делает NoSQL СУБД. Какие оговорки и условия, касающиеся ACID, появились в PostgreSQL вследствие добавления этой поддержки?
Хороший способ, он значительно снижает вероятность потери данных, но не устраняет её полностью. Чтобы способ сработал, надо, чтобы сервер бизнес-логики не умер одновременно с ведущим сервером БД.
«Придумала» и «реализовала» — разные вещи. Ingres действительно появился раньше, чем System R, но Кодд, который собственно и придумал прикрутить реляционную алгебру к управлению данными, как ни крути, был сотрудником IBM.
Ну классика же:
— Гражданин Петров обвиняется в самогоноварении, т. к. у него в сарае найден самогонный аппарат. Петров, признаёте ли вы себя виновным?
— Да что уж там, судите и за изнасилование!
— А кого вы изнасиловали?
— Да никого, но аппарат-то в наличии!
Нет, во главе новых стран становятся не вайшьи (торговцы), а кшатрии (воины) и брахманы (жрецы, поэты). Одним их самых известных государств-стартапов в истории считается Республика Фиуме (про неё даже Маяковский двустишье написал). Почитайте, очень забавная история. Особенно когда наблюдаешь её издалека.
Но только это должны быть самые лучшие таблетки с доказанным 100% гарантированным действием!
Америка, хайвэй. Полицейский останавливает машину, подходит к водителю и бьёт его по лицу:
— Когда полицейский подходит, документы должны лежать на торпеде, а руки на руле! Всё понятно?
— Да, сэр!
Полицейский обходит машину и точно так же бьёт пассажира:
— И чтобы когда тронетесь, не смел говорить «попробовал бы он так со мной»! Всё понятно?
Ну почему же, тот undo, который относится к транзакциям, начавшимся позже и завершившимся раньше, вполне можно чистить. В этом случае длинная транзакция может наткнуться на строки, для которых не существует версии, актуальной на момент её начала. Но это лучше, чем держать ради неё undo (imho, разумеется)
У Oracle строки мигрируют только если меняется ключ секционирования. Если это обычная таблица, то в старой странице её корень остаётся навечно (до
ALTER TABLE ... MOVE), и индекс указывает на корень. А корень в свою очередь указывает на то место, где лежат настоящие данные. Это явление называется chained rows.Вот это прямо-таки бриллиант, ради которых и просматриваешь Хабр. Спасибо огромное!
«Я просто выполнял приказ» ©
Мне тоже интересно.
Волна возмущения прокатилась по российским соцсетям в связи с блокировкой «Макса» в AppStore. «Чего ж вы так долго ждали!» — пишут разгневанные пользователи.
Написано хорошо, но вот автоматика EKF как-то резко снижает градус пафоса. Если покупаешь не по 44-ФЗ, а для себя, лучше всё-таки выбрать ABB, Legrand или хотя бы Schneider :)
Для УЗО номинал — это всего лишь максимальный ток, можно ставить с избытком. Всё равно срабатывает оно от утечки. Вот автомат с избытком ставить уже нельзя.
Вспоминается старый анекдот «и стоило из-за одного слова целый язык выдумывать?»
Есть QOwnNotes, но он далеко не такой приятный, как Obsidian.
Пробовал. На одном-двух небольших файлах загрузка процессора под 70% и жуткие тормоза. Нативный говнокод. VS Code при этом вполне нормально работает.
Идея интересная, но подобного рода протоколов много, а клиентов у них — сами знаете сколько. Вот, например, интересная подборка статей: https://vitus-wagner.dreamwidth.org/tag/cheshirenet
Думать надо не в сторону протокола, а в сторону продукта, т. е. как это будет выглядеть для конечного пользователя. Но в любом случае успехов вам!
Это такой вьетнамский суп с
котомлапшой — vietnamese pho noodles.Да и 90% людей :)