Может ли DynamoDB «дизайн одной таблицы» хорошо сочетаться с архитектурой Microservices? - PullRequest
0 голосов
/ 12 февраля 2019

Микросервисы - несколько БД / таблиц

Когда я впервые прочитал о Микросервисах (MS), одной из самых удивительных вещей было то, что у каждой MS есть своя собственная БД.Я думаю, что теперь я понимаю эту концепцию, и я ее принимаю.

БД NoSQL - одна таблица

Затем я начал исследовать БД NoSQL, а именно DynamoDB.Я смотрел это видео о глубоком погружении , где докладчик обсуждает идею создания реляционной модели - скажем, 4 таблицы и представления данных в одной таблице.Затем он использует различные методы, чтобы сделать данные супер быстрыми для запроса даже в масштабе.

Опять же, я думаю, я понимаю эту концепцию.

Объединение этих двух вопросов - вот где я запутался.MS хотят, чтобы я разбил вещи на отдельные службы и, следовательно, на отдельные БД (или таблицы), но шаблоны NoSQL хотят, чтобы у меня была одна таблица ....

Эти две модели / архитектуры проектирования не работают вместе или ячто-то упустил?

1 Ответ

0 голосов
/ 13 февраля 2019

Если вы объедините две идеи, то в итоге у каждого микросервиса будет своя собственная база данных, а у каждой базы данных будет только одна таблица.

Если у вас есть несколько микросервисов, работающих в одной учетной записи AWS, я могу понять, почему вы можете быть сбиты с толку, потому что в конечном итоге вы получите несколько таблиц в DynamodB.Я попытаюсь прояснить некоторые вопросы.

Как я могу иметь отдельные базы данных в DynamoDB?

В DynamoDB понятие «отдельные базы данных» не очень значимая идея.С точки зрения DynamoDB, каждая таблица не зависит от любой другой таблицы (в отличие от реляционной базы данных).Вам не нужно управлять оборудованием, поэтому вы не можете видеть, находятся ли ваши таблицы на одних и тех же серверах, и определенно нет понятия экземпляров базы данных.

Как я могу иметь отдельные базы данных, если у DynamoDB нет «отдельных баз данных»?

Цель не обязательно состоит в том, чтобы иметь отдельную базу данных для каждой микро-службы.Цель состоит в том, чтобы обеспечить единственную связь между микроуслугами через API, предоставляемые микроуслугами.Наличие отдельных баз данных - это один из способов обеспечить это (чтобы микросервисы не были привязаны к общему режиму внутренних данных), но это не единственный способ.

Так что мне делать?

Каждый микросервис должен иметь любые таблицы, необходимые для его функционирования.Любая таблица должна быть прочитана и записана только одним микросервисом.Чтобы обеспечить изоляцию между микроуслугами, работающими в одной и той же учетной записи AWS, вы должны использовать политики IAM, чтобы убедиться, что каждый микросервис имеет доступ только к своей собственной таблице DynamodB.В некоторых случаях может быть лучше поместить каждую микросервисную службу в свою учетную запись AWS, чтобы обеспечить даже высокий уровень разделения между ними.(Дополнительным преимуществом этого подхода является то, что если одна из учетных записей будет взломана, злоумышленник получит доступ только к одному из микросервисов.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...