PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Схема на релационна база данни за източник на събития

Мисля, че е по-гъвкаво, ако съхранявате промоутъра като част от полезния товар на събитието вместо метаданни. Проблемите със сигурността трябва да се решават извън домейна. Не всяко събитие се повдига от потребител, въпреки че можете да направите фалшиво за тях (SysAdmin за CronJob).

Например:

ManualPaymentMadeEvent { //store this object as details in your schema
    amount,
    by_user//In this case, developers can determine whether store the promoter case by case
}

Мисля, че имената на класовете са достатъчни. Добавянето на друга таблица усложнява четенето на събития (чрез таблици за присъединяване) и мисля, че добавя стойност само когато имената на класовете се преименуват (Актуализирайте един ред в таблицата с типове събития). Но мисля, че не добавя много проблеми с помощта на

update domain_events set 
    aggregate_type = 'new class name'
where aggregate_type = 'origin class name'

Не съм сигурен, че разбирам групите събития, можете ли да добавите повече обяснение?

Понякога събитията се използват за интегриране на множество контексти. Но всяко събитие се повдига само в един контекст. Например ManualPaymentMadeEvent се повдига в контекста на поръчката и списъкът на събития в контекста на доставката също го консумира, считайки го за тригер за стартиране на доставката.

Предпочитам да използвам за потребител на база данни (термин oracle) за контекст. shipping.domain_events за контекст на доставка и ordering.domain_events за контекст на поръчка.

Ето схемата в axon-framework което може да помогне

create table DomainEventEntry (
    aggregateIdentifier varchar2(255) not null,
    sequenceNumber number(19,0) not null,
    type varchar2(255) not null,  --aggregate class name
    eventIdentifier varchar2(255) not null,
    metaData blob,   
    payload blob not null, -- details
    payloadRevision varchar2(255),
    payloadType varchar2(255) not null, --event class name
    timeStamp varchar2(255) not null
);

alter table DomainEventEntry
    add constraint PK_DomainEventEntry primary key (aggregateIdentifier, sequenceNumber, type);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL - Удостоверяването на паролата е неуспешно след добавяне на групови роли

  2. Как мога да прочета клеймо за време със стойност на часова зона (timestamptz) от PostgreSQL в Rust?

  3. Как да разделим име на фамилия плюс инициали

  4. Променете първичния ключ в таблицата на PostgreSQL

  5. Django филтър за заявки, използващ голям масив от идентификатори в Postgres DB