diff --git a/docs/arch.md b/docs/arch.md index a0d7684d7686732a04d4d40e5a176093238281c0..d07eff9a33398ba8d64f151ac40bf7bf29f182ac 100644 --- a/docs/arch.md +++ b/docs/arch.md @@ -7,7 +7,7 @@ ВерÑÐ¸Ñ Ñхемы и верÑÐ¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÑÑŽÑ‚ÑÑ Ñ€Ð°Ð·Ð´ÐµÐ»ÑŒÐ½Ð¾ друг от друга. Ð”Ð»Ñ Ð²ÐµÑ€ÑÐ¸Ð¾Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñхемы иÑпользуетÑÑ Ð½Ð°Ð±Ð¾Ñ€ ÑемантичеÑких правил [SemVer](https://semver.org/lang/ru/). Правила Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²ÐµÑ€Ñий Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ быть произвольными и задаватьÑÑ Ð¿Ð¾ желанию пользователÑ, но при Ñтом должно быть выполнено уÑловие: у любых двух верÑий Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ Ñ€Ð°Ð·Ð½Ð¾Ð¹ логикой должны быть разные пары **Ð¸Ð¼Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ** - **верÑÐ¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ**. -Приложение может работать только когда в клаÑтере на вÑех активных инÑтанÑах во вÑех репликаÑетах запущена одна и та же верÑÐ¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ. Проверка верÑий запущенных приложений делаетÑÑ Ñ‡ÐµÑ€ÐµÐ· журнал Raft. Каждое приложение при запуÑке ждет коммита Ñвоей верÑии в Raft log. +Приложение может работать только когда в клаÑтере на вÑех активных инÑтанÑах во вÑех репликаÑетах загружена одна и та же верÑÐ¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ. Проверка верÑий запущенных приложений делаетÑÑ Ñ‡ÐµÑ€ÐµÐ· журнал Raft. Каждое приложение при запуÑке ждет коммита Ñвоей верÑии в Raft log. ВерÑÐ¸Ñ Ñхемы в клаÑтере менÑетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в большую Ñторону. Любые Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñхемы ÑопровождаютÑÑ ÑƒÐ²ÐµÐ»Ð¸Ñ‡ÐµÐ½Ð¸ÐµÐ¼ верÑии. Откатить верÑию Ð½ÐµÐ»ÑŒÐ·Ñ (кроме воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð· резервной копии). @@ -16,7 +16,7 @@ 1. (ОбÑзательно).Ð’ коде приложениÑ. ЕÑли в приложении задана завиÑимоÑÑ‚ÑŒ от Ñхемы v3.2.1, то Ñто приложение не должно запуÑкатьÑÑ, еÑли не выполнÑетÑÑ ÑƒÑловие: 3.2.1 <= верÑÐ¸Ñ Ñхемы в клаÑтере < 4.0.0, за иÑключением Ñлучаев, опиÑанных в Ñледующем пункте. Ð’ Ñлучае Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¸Ñ Ð½ÐµÑовмеÑтимой верÑии Ñхемы Picodata должна оÑтанавливать приложение и ждать, пока Ñхема Ñтанет ÑовмеÑтимой. При Ñтом должно выводитьÑÑ ÑоответÑтвующее Ñообщение в журнал дейÑтвий. 2. (Опционально). Глобально в клаÑтере в реплицируемом через Raft хранилище конфигурации может быть задано множеÑтво вариантов ÑовмеÑтимоÑти любой верÑии Ñхемы Ñ Ð»ÑŽÐ±Ð¾Ð¹ верÑией приложениÑ. Ðтот признак ÑовмеÑтимоÑти имеет приоритет над первым. Т.е. когда Picodata запуÑкает приложение, Ñначала проверÑетÑÑ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ðº ÑовмеÑтимоÑти ÑоглаÑно глобальной клаÑтерной конфигурации: еÑли ÑовмеÑтимо, то Picodata запуÑкает приложение ÐЕЗÐВИСИМО ОТ ПРÐВИЛ SEMVER. ПредполагаетÑÑ, что админиÑтратору может понадобитьÑÑ Ð·Ð°Ð´Ð°Ñ‚ÑŒ ÑовмеÑтимоÑÑ‚ÑŒ таким образом при решении проблем, Ñм. пример ниже. -Проверка ÑовмеÑтимоÑти верÑий включена по умолчанию, но её можно отключить. +Проверка ÑовмеÑтимоÑти верÑий включена по умолчанию, но ее можно отключить. ### Явное задание ÑовмеÑтимоÑти верÑий Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¸ Ñхемы Приведем пример, когда нужно воÑпользоватьÑÑ Ñвным ÑпоÑобом Ð·Ð°Ð´Ð°Ð½Ð¸Ñ ÑовмеÑтимоÑти между приложением и Ñхемой данных. Ðто и еÑÑ‚ÑŒ _опциональный_ ÑпоÑоб, указанный выше. diff --git a/docs/benefits.md b/docs/benefits.md index bab1ca51dc89cf4f04b30ce08ede0ae2ed5a283e..b204b7e785fc7f7817a4f2dddf8e8be1ea27b6bc 100644 --- a/docs/benefits.md +++ b/docs/benefits.md @@ -6,7 +6,7 @@ Picodata реализует [ACID-подход](https://ru.wikipedia.org/wiki/ACID), при котором любые Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… предварительно ÑохранÑÑŽÑ‚ÑÑ Ð² журнале на диÑке и реплицируютÑÑ Ð½Ð° неÑколько Ñерверов. При выходе из ÑÑ‚Ñ€Ð¾Ñ Ð»ÑŽÐ±Ð¾Ð¹ компоненты данные автоматичеÑки воÑÑтанавливаютÑÑ Ð¸Ð· ÑущеÑтвующих копий, что позволÑет добитьÑÑ Ð²Ñ‹Ñокой отказоуÑтойчивоÑти. Ð’Ñе операции Ñ Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð³Ð¸ÐµÐ¹ клаÑтера и Ñхемой данных также атомарны. ## Горизонтальное маÑштабирование -Picodata обеÑпечивает Ñффективное управление раÑпределённым клаÑтером. Данные в клаÑтере разделены на незавиÑимые фрагменты (шарды) по чиÑлу доÑтупных Ñдер процеÑÑора. Такой подход Ñнижает издержки на разделÑемый доÑтуп к данным, повышает утилизацию Ð¾Ð±Ð¾Ñ€ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ позволÑет в любой момент нараÑтить вычиÑлительную мощноÑÑ‚ÑŒ ÑиÑтемы. +Picodata обеÑпечивает Ñффективное управление раÑпределенным клаÑтером. Данные в клаÑтере разделены на незавиÑимые фрагменты (шарды) по чиÑлу доÑтупных Ñдер процеÑÑора. Такой подход Ñнижает издержки на разделÑемый доÑтуп к данным, повышает утилизацию Ð¾Ð±Ð¾Ñ€ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ позволÑет в любой момент нараÑтить вычиÑлительную мощноÑÑ‚ÑŒ ÑиÑтемы. ## Выполнение бизнеÑ-логики внутри решетки данных Мы в Picodata нашли ÑпоÑоб маÑштабировать не только данные, но и вычиÑлениÑ. Ðаша ÑиÑтема хранит и верÑионирует программный код на каждом узле клаÑтера. Мы разработали целый Ñ€Ñд техник, позволÑющих безопаÑно обновлÑÑ‚ÑŒ раÑпределенные приложениÑ, ÑохранÑÑ Ñ†ÐµÐ»Ð¾ÑтноÑÑ‚ÑŒ данных и Ð¸Ð·Ð±ÐµÐ³Ð°Ñ Ð¿Ñ€Ð¾Ñтоев ÑиÑтемы (no downtime). Ð’Ñе Ñто позволÑет обеÑпечить беÑкомпромиÑÑную ÑкороÑÑ‚ÑŒ операций Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸.