Вам нужны разные серверы баз данных для каждой модели чтения CQRS, или вы можете поместить их в одну и ту же базу данных, но в разные таблицы.
Как правило, вы ожидаете разные логические базы данных. Возможно, они размещены на одном и том же устройстве длительного хранения, но ни один из кодов не должен ожидать того, что данные будут храниться в одном месте.
Если у вас разные базы данныхтогда как вы должны присоединиться к столу.
Вы должны НЕ присоединиться к столам. Вместо этого вы копируете данные - переводя из представления, которое имеет смысл для записи, в представление, которое имеет смысл для чтения.
, если мы используем одну и ту же базу данных, тогда наши микроуслуги не будут тесно связаныи это разрушило бы всю цель использования этой архитектуры
Связь действительно исходит из предположения, что различные службы касаются одних и тех же строк . Другими словами, мы не хотим, чтобы процессы сообщали через базу данных. Вместо этого мы передаем сообщения между службами, а службы управляют своими собственными данными.
Если вы получаете это право, то тот факт, что вам удается хранить эти данные в одном устройстве, не имеет значения, поскольку ваши службы никогдана самом деле смотрите за пределы своего собственного маленького пузыря.
Другой способ выразить ту же идею: вы должны иметь возможность изменять «свою» схему без необходимости координировать свои действия с кем-либо еще.
скажем, у нас есть микросервис пользователей и микросервис постов, как я должен запрашивать посты у каждого пользователя, который их опубликовал, как я могу управлять связанными данными между разными микросервисами?
Вы копируете данные в общую базу данных, где затем можете создавать нужные отчеты.