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

Мультиарендный подход к инфраструктуре работы с данными. Доклад Яндекса

Время на прочтение16 мин
Количество просмотров3.1K
Всего голосов 8: ↑7 и ↓1+8
Комментарии4

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

Multi-tenancy — действительно интересная и сложная тема. Поясните пожалуйста тенант в ваших системах — это что, дайте пожалуйста определение. И еще как Вы решаете проблему доступа к географически распределённым данным, которые принадлежат одному тенанту, есть ли вообще у Вас такой сценарий? Поясню, например, компания покупает сервис, при этом её данные должны храниться в разных регионах с разным законодательством, а пользователь хочет видеть все в «одном окне».
Что такое тенант? Это зависит от системы. Например, в YDB кластере есть понятие тенанта. Логически тенант — это база данных. Физически это набор выделенных виртуальных машин (база распределенная) и сегмента общего распределенного хранилища. Здесь все достаточно просто.
Интереснее — это YDB Serverless, вот здесь понятие multi-tenancy полностью раскрывается. Serverless база данных — это набор объектов размещенных в памяти виртуальных машин и сегмент общего распределенного хранилища. Объекты в памяти — это таблетки (RSM — replicated state machine) и акторы, выполняющие пользовательские запросы (C++ class instances). То есть маленькая база данных потребляет немного памяти для размещения этих объектов, немного CPU, если запросов мало. Подробнее про это рассказано на Hydra 2021. Видео пока нет в широком доступе, но презентация выложена на странице: hydraconf.com/2021/msk/talks/6nhcltwgipzcyzubzjjng

Межгосударственных инсталляций YDB сейчас нет. Проблема, которую вы поднимаете, понятна, вопросы GDPR и смежных регламентов известна. Не думал, что уже сформировался запрос на видеть все в «одном окне», здесь есть над чем подумать.
Спасибо большое за ответ. А для (микро)сервисов тенант чем представлен, даже не так, сервисы привязываются к тенанту или не зависят от них? Если не зависят, то как сервис понимает к какому тенанту идти?

Здесь все просто. Грубо говоря, база данных имеет connection string, которая состоит из service endpoint и id базы, например так:

endpoint: ydb.serverless.yandexcloud.net:2135

database id: /ru-central1/xxxxxxxxxxxxxx/yyyyyyyyyyyyy

Зарегистрируйтесь на Хабре, чтобы оставить комментарий