2016-08-22 6 views
1

Если я создаю один table (или document в document databases) в aggregate type, я могу объединить базы данных или шард их всякий раз, когда я реорганизовать write стороны по microservices, и в результате приложения становится более масштабируемым, а также увеличивает скорость загрузки events.Как разработать модель данных MongoDB для хранения событий Event Sourcing

Есть ли побочные эффекты, о которых я должен знать, пока я проектирую event store?

Edit:

настоящее время я использую MongoDb.

Что делать, если я создаю collection за aggregate id? или a database за aggregate type и a collection за aggregate id ...?

Является ли это проблематичным по производительности, простоте администрирования данных, ремонтопригодности или дополнительной масштабируемости?

+1

Вы говорите о таблице-Per-агрегатный-Type (каждое событие строка в таблице) или Document-Per-Aggregate-Instance (один документ на экземпляр, события как массив внутри документа, единая коллекция для всех агрегатов)? –

+0

Будет ли вопрос лучше сформулирован как «как мне создать мою модель данных MongoDB для хранения событий Sourcing Event»? – guillaume31

+0

@ guillaume3: такой дизайн данных событий приводит к неличному хранилищу событий (все агрегаты не упорядочены в одной таблице, документе или файле ...) на стороне записи, и я ищу проблемы, которые он может обеспечить в разных ситуациях (особенно MongoDb). Например, возможно, такой дизайн подходит для баз данных Sql, но не для MongoDb ... – Mohsen

ответ

1

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

Есть ли какие-либо побочные эффекты, о которых я должен знать, пока я проектирую такой магазин событий?

Я не видел авторитетного обсуждения этого проекта.

Было проведено обсуждение в сообществе поставщиков источников информации о наличии отдельной таблицы для каждого типа совокупности. Вы можете найти это обсуждение here. Резюме: более опытные практикующие, казалось, начали, что кто-то сделает это нарочно.

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

Следующее может быть полезным

+0

: Спасибо. Ответ недостаточно ясен; не могли бы вы объяснить, яснее? Что вы подразумеваете под «этим» в предложении: «Я не видел никакого авторитетного обсуждения этого дизайна». ...? Тонкс. – Mohsen

+0

Я только уточнил вопрос. – Mohsen