Üç çözüm düşünebilirim - EAV, XML ve Seyrek Sütunlar. İkincisi satıcıya özgüdür ve sizin için yararlı olmayabilir.
Hangi yöntemi seçerseniz seçin, orijinal istek verilerini ham biçimde, bir tabloda veya düz bir dosyada saklamayı düşünebilirsiniz. Verileri depolamanın yeni yollarını denemeyi kolaylaştıracak, isteklerinizi ayrıştırma yönteminizle ilgili bir hata bulursanız verileri yeniden yüklemenize olanak tanıyacak ve toplu işlem veya "büyük veri" kullanarak API isteklerini ayrıştırma fırsatları sunacak veri ambarınızın verilerle verimli bir şekilde başa çıkamayacağını tespit ederseniz
EAV ile ilgili hususlar
EAV / KVS, yukarıda açıkladığınız gibi, muhtemelen en basit uygulama olacaktır.
Ne yazık ki çok pahalı olacak - yaygın olarak kullanılan anahtarlar üzerinde her türlü verimli sorguları almak için anahtar sütununda çok parçalanmış olabilecek dizinlere ihtiyacınız olacak. Belirli anahtarları sorgulamak çok pahalıya mal olacaktır.
Değer verdiğiniz anahtarları veya değerleri sorgulamak için EAV mağazanızı materyal görünümleriyle (birçok satıcı bunu destekler) destekleyerek dizin oluşturma veya dizin tarama maliyetini düşürebilirsiniz.
XML
Çoğu kurumsal veritabanı sistemi, doğrulama, dizin oluşturma ve gelişmiş sorgulama da dahil olmak üzere çok olgun XML işleme sunar.
API isteğini veritabanına XML olarak yüklemek, istek başına bir grup sağlar; bu, mantıksal olarak, bir EAV tablosunda bilinmeyen sayıda satıra sahip olmaktan biraz daha lezzetli olabilir.
Bunun etkili olup olmadığı, RDBMS satıcınıza ve uygulamanıza çok bağlıdır.
En büyük dezavantajı, bu, orijinal isteğin dize manipülasyonundan daha karmaşık olan verileri yönetmenin tek yolu olmasıdır!
Seyrek Sütunlar / geleneksel tablolar
Verilerinizi, anahtar başına bir sütun olacak şekilde geleneksel bir tablo yapısına yükleyebilirsiniz.
SQL Server'ın Seyrek Sütunlar özelliği, bir EAV mağazasına mükemmel bir alternatiftir. Seyrek Sütunlara sahip bir tablo, 30.000 sütuna kadar olabilmesi dışında, normal sütunlarla aynı şekilde davranır ve seyrek sütunlardaki NULL değerleri tabloda boşluk kullanmaz.
Bunları Filtrelenmiş Dizinlerle (başka bir SQL Server'a özgü özellik) birleştirmek, birkaç belirli sütun ve / veya değeri sık sık sorguluyorsanız, EAV deposuna son derece verimli bir alternatif sağlayabilir.
Diğer satıcılarla geleneksel bir tablo kullanmak uygun olabilir - IBM, tablo başına 700'den fazla sütunu ve yaklaşık 1000 Oracle'ı destekler ve sıkıştırma veya Oracle'ın sondaki boş değerlere muamele gibi özellikler, API verilerinizi oldukça verimli bir şekilde depolayabileceğiniz anlamına gelebilir.
Bu yaklaşımın bariz dezavantajı, API'nize yeni anahtarlar ekledikçe, şemanızı buna göre ayarlamanız gerektiğidir.