You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Veri modeli tasarimi ve avantajlari (versiyonlama, zaman damgalari, sahiplik)
#10
Bu tartismada contextHub projesi icin planladigimiz veri modeli ve bunun avantajlarini ayrintili olarak paylasiyoruz. Amacimiz WordPress benzeri ancak cok daha esnek, olceklenebilir ve optimize bir yapi sunmak.
Oz
et model
Multi-tenant: Tum koleksiyonlarda tenantId alani var. tenants ve domains koleksiyonlari kiraci ve alan adlarini temsil eder.
Yetkilendirme ve kullanicilar: users ve memberships ile rol bazli erisim. Her membership dokumaninda roles, createdAt, updatedAt, createdBy, updatedBy alanlariyla kayit sahibi ve tarihcesi tutulur.
Icerik tipleri ve kayitlar: contentTypes koleksiyonunda icerik tipleri (Page, Post, Campaign vb.) tanimlanir. Her icerik kaydi entries koleksiyonunda saklanir. Kayitlarda taslak (lexical, htmlCachedDraft) ve yayinlanmis (published.lexical, published.htmlCached) surumler bulunur. Istege bagli esnek alanlar icin meta objesi vardir.
Taxonomies ve terms: Kategoriler, etiketler ve diger hiyerarsik/duz terimler icin taxonomies ve terms.
Navigasyon: navigation koleksiyonu menuler ve site haritasini tutar.
Medya: R2/S3 uzerinde saklanan dosyalarin meta verisi media koleksiyonunda; varyantlar (thumb, webp vb.) listelenebilir.
Formlar ve cevaplar: forms (alanlar, dogrulama, tetikleyiciler) ve formResponses (gelen veriler, metadata) koleksiyonlari vardir.
Analitik: events ve gunluk agregasyon dailyAgg koleksiyonlari ile basit ziyaret & custom event takibi.
Commerce ve ozel koleksiyonlar: Basit urun/market yapisi ve JSON sema tabanli esnek koleksiyonlar.
Versiyonlama ve yayinlama akisi
Her entry dokumaninda taslak ve yayinlanmis icerik ayirt edilir: status alani (draft, scheduled, published, archived), taslak lexical ve yayin published objesi.
Yayinlama sirasinda published.version artirilir ve entryRevisions koleksiyonuna immutable bir snapshot kaydedilir. Bu sayede eski versiyonlara geri donus ve degisiklik karsilastirmasi yapilabilir.
schedule ozelligi ile gelecekte bir tarihte yayinlamak mumkun.
Geri alma (rollback) isleminde istenen versiyon entryRevisions'tan alinarak taslak alanina kopyalanir ve istenirse tekrar yayinlanir.
Audit ve zaman damgalari
Tum koleksiyonlar createdAt, updatedAt, createdBy, updatedBy alanlarina sahiptir. Opsiyonel deletedAt ile soft delete.
Bu alanlar sayesinde bir kayit kimin tarafindan ne zaman olusturuldu, kim tarafindan guncellendi ve silindi net olarak takip edilebilir.
Audit log ihtiyaclari icin ayrica bir auditLog koleksiyonu dusunulebilir.
Avantajlar
MongoDB’nin belge yapisi esnek alanlar (meta) ile performans ve kolay indeksleme saglar.
tenantId uzerinden partition/sharding ile her kiracinin verisi birbirinden ayrilir ve olceklenebilir.
WordPress’in postmeta ve terms tablolarindaki daginiklik yerine anlamli koleksiyonlar ve iliskiler; iliskiler ID listeleri ile tutulur.
Taslak vs yayin ayrimi sayesinde icerik uretim sureci guvenli, surumlu ve geri alinabilir.
Zaman damgalari ve createdBy/updatedBy alanlari ile icerik sahipligi ve sorumluluk takibi yapilir.
Bu tasarim uzerinde gorus ve onerilerinizi duymak isteriz. Icerigin daha da iyilestirilmesi icin yorumlarinizi paylasabilirsiniz! 😊
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Merhaba ekip,
Bu tartismada contextHub projesi icin planladigimiz veri modeli ve bunun avantajlarini ayrintili olarak paylasiyoruz. Amacimiz WordPress benzeri ancak cok daha esnek, olceklenebilir ve optimize bir yapi sunmak.
Oz
et model
tenantIdalani var.tenantsvedomainskoleksiyonlari kiraci ve alan adlarini temsil eder.usersvemembershipsile rol bazli erisim. Her membership dokumanindaroles,createdAt,updatedAt,createdBy,updatedByalanlariyla kayit sahibi ve tarihcesi tutulur.contentTypeskoleksiyonunda icerik tipleri (Page, Post, Campaign vb.) tanimlanir. Her icerik kaydientrieskoleksiyonunda saklanir. Kayitlarda taslak (lexical,htmlCachedDraft) ve yayinlanmis (published.lexical,published.htmlCached) surumler bulunur. Istege bagli esnek alanlar icinmetaobjesi vardir.taxonomiesveterms.navigationkoleksiyonu menuler ve site haritasini tutar.mediakoleksiyonunda; varyantlar (thumb, webp vb.) listelenebilir.forms(alanlar, dogrulama, tetikleyiciler) veformResponses(gelen veriler, metadata) koleksiyonlari vardir.eventsve gunluk agregasyondailyAggkoleksiyonlari ile basit ziyaret & custom event takibi.Versiyonlama ve yayinlama akisi
entrydokumaninda taslak ve yayinlanmis icerik ayirt edilir:statusalani (draft, scheduled, published, archived), taslaklexicalve yayinpublishedobjesi.published.versionartirilir veentryRevisionskoleksiyonuna immutable bir snapshot kaydedilir. Bu sayede eski versiyonlara geri donus ve degisiklik karsilastirmasi yapilabilir.scheduleozelligi ile gelecekte bir tarihte yayinlamak mumkun.entryRevisions'tan alinarak taslak alanina kopyalanir ve istenirse tekrar yayinlanir.Audit ve zaman damgalari
createdAt,updatedAt,createdBy,updatedByalanlarina sahiptir. OpsiyoneldeletedAtile soft delete.auditLogkoleksiyonu dusunulebilir.Avantajlar
meta) ile performans ve kolay indeksleme saglar.tenantIduzerinden partition/sharding ile her kiracinin verisi birbirinden ayrilir ve olceklenebilir.postmetavetermstablolarindaki daginiklik yerine anlamli koleksiyonlar ve iliskiler; iliskiler ID listeleri ile tutulur.createdBy/updatedByalanlari ile icerik sahipligi ve sorumluluk takibi yapilir.Bu tasarim uzerinde gorus ve onerilerinizi duymak isteriz. Icerigin daha da iyilestirilmesi icin yorumlarinizi paylasabilirsiniz! 😊
All reactions