Bence soru verinin kalitesinin sorumluluğu ile ilgili.
Yanıt, sistemi nasıl gördüğünüze bağlıdır.
Veritabanını uygulamadan bağımsız, bağımsız ve özerk bir hizmet olarak görürseniz, veritabanı içerdiği verilerin tutarlılığını ve kalitesini sağlamaktan sorumludur. Esasen bu veritabanı farklı bir uygulama tarafından kullanılabileceğinden, aynı tutarlılığa ve kalite davranışlarına sahip ikinci uygulamaya güvenemez. Bu durumlarda, veritabanının bir API ve özerk davranışı ortaya çıkaracak şekilde tasarlanması gerekir. Bu görünümde en az iki uygulama vardır, bunlardan biri veritabanı, diğeri onu kullanan uygulamadır.
Bunun tersine, veritabanı uygulamanın doğrudan ve toplam kontrolü altında olan karmaşık bir dosya biçimi olarak düşünülebilir. Bu anlamda veritabanı, saf bir serileştirme ve belge gezinme aracı olarak gelişir. Sorguyu ve belge bakımını (JSON veya XML araçları gibi) desteklemek için bazı gelişmiş davranışlar sağlayabilir, ancak yine de (çoğu dosya akışının yaptığı gibi) gerekmez. Bu durumda, dosyada doğru biçimi ve içeriği korumak tamamen programların sorumluluğundadır. Bu görünümde bir uygulama vardır.
Her iki görünümde de sonraki soru, veritabanının süslü bir dosya veya ayrı bir hizmet olarak kullanılmasının nasıl destekleneceğidir. Bunu şu şekilde yapabilirsiniz:
- veritabanı platformunun sağladığı araçları tablolar / görünümler / saklı yordamlar / tetikleyiciler / vb.
- veritabanını, tüm istemcilerin veritabanına erişmek için kullanması gereken bir hizmetin içine kaydırma
- veritabanına, verilere erişmek için tüm istemciler tarafından kullanılması gereken bir kitaplık içinde kaydırma.
Her birinin kendi artıları / eksileri vardır ve sistemin içinde çalıştığı ortamın mimari kısıtlamalarına bağlı olacaktır.
Hangi görünüme sahip olursanız olun, verileri her zaman sınırlarda doğrulamak ödeme yapar.
- Bir kullanıcının girdiği kullanıcı arayüzündeki alanları doğrulayın
- Ağ / API isteğini istemciden ayrılmadan önce doğrulayın
- Herhangi bir şey yapmadan önce sunucudaki ağ / API İsteğini doğrulayın
- İş kurallarına geçirilen verileri doğrulayın
- Kalıcı olmadan önce verileri doğrulayın
- Kalıcılıktan alındıktan sonra verileri doğrulayın
- ve benzeri
Her sınırda ne kadar validasyonun garanti edileceği, validasyonun ne kadar riskli olduğuna bağlıdır.
- iki sayıyı birlikte çarpmak?
- yanlış numarayı alıyorsanız bu bir sorun mu?
- belirli bir bellek konumunda bir prosedür mü çağırıyorsunuz?
- Bu hafıza konumunda ne var?
- Nesne yoksa veya kötü durumdaysa ne olur?
- kanji içeren bir dize üzerinde regex kullanarak?
- Normal ifade modülü unicode ile başa çıkabilir mi?
- Normal ifade unicode ile başa çıkabilir mi?
However, why not perform validation of data on the application side before storing them into the database?
bu ikisi birbirini dışlamazlar. Her iki tarafta da farklı şeyleri doğrulamanız muhtemeldir. Uygulama tarafındaki doğrulamalar iş merkezli olsa da, veritabanındaki doğrulamalar daha fazla veri merkezlidir. Birkaç ve farklı uygulamalardan beslenen bir veritabanında düşünün.