PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Skema database relasional untuk sumber acara

Saya pikir itu lebih fleksibel jika Anda menyimpan promotor sebagai bagian dari muatan acara daripada meta data. Masalah keamanan harus ditangani di luar domain. Tidak setiap acara dimunculkan oleh pengguna, meskipun Anda bisa membuat acara palsu untuk mereka (SysAdmin untuk CronJob).

Misalnya:

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
}

Saya pikir nama kelas sudah cukup. Menambahkan tabel lain memperumit pembacaan acara (dengan menggabungkan tabel), dan saya pikir itu hanya menambah nilai ketika nama kelas diganti namanya (Perbarui satu baris dalam tabel jenis acara). Tapi saya pikir itu tidak menambah banyak masalah dengan menggunakan

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

Saya tidak yakin bahwa saya memahami grup acara, dapatkah Anda menambahkan lebih banyak penjelasan?

Terkadang peristiwa digunakan untuk mengintegrasikan berbagai konteks. Namun setiap peristiwa dimunculkan hanya dalam satu konteks. Misalnya, A ManualPaymentMadeEvent dimunculkan dalam konteks pemesanan, dan event listner dalam konteks pengiriman juga menggunakan itu, menganggapnya sebagai pemicu pengiriman awal.

Saya lebih suka menggunakan per pengguna basis data (istilah Oracle) per konteks. shipping.domain_events untuk konteks pengiriman dan pemesanan.domain_events untuk konteks pemesanan.

Berikut adalah skema di axon-framework yang mungkin bisa membantu

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. Solusi DBaaS Terbaik untuk PostgreSQL

  2. Transaksi tidak dapat menangani perintah paralel melalui Task.WhenAll

  3. Bagaimana cara berlangganan notifikasi pengguna baru?

  4. Perbarui pernyataan menggunakan klausa WHERE yang berisi kolom dengan Nilai nol

  5. Postgresql mengubah jenis kolom dari int ke UUID