Sto lavorando su una piattaforma GIS che gestisce fondamentalmente le strade con funzionalità. Il sistema utilizza un modello EAV per archiviare tutti i dati in un database. Il sistema è in circolazione da un po 'e non c'è nulla che io possa fare per cambiare completamente il modello del database. EAV è stato scelto perché ogni installazione aveva caratteristiche uniche con attributi unici.
Vogliamo creare API (ad esempio un Web Api) e viste di database su questa piattaforma per una facile integrazione con altri sistemi, principalmente di sola lettura.
La sfida che stiamo affrontando oggi durante la progettazione delle API è principalmente due:
- Prestazioni: in genere prestazioni lente / query complesse quando si tenta di elencare le funzioni insieme agli attributi
- Ricercabilità: difficile eseguire una query con i tipi corretti (surface = 'ghiaia' e larghezza > 2) perché tutto è memorizzato come stringhe nel database
Idealmente, vorremmo avere un set di tabelle nel database, uno per ogni funzione con le colonne e i tipi di dati corretti.
Un'idea è di utilizzare i trigger sul database per creare e gestire uno schema separato contenente queste tabelle con le colonne corrette (una per ogni tipo di funzionalità). Questo schema dovrebbe ricreare le parti interessate, ad esempio se un attributo viene aggiunto o rimosso da un determinato tipo di funzionalità. La creazione di questi trigger non è un compito banale.
Qualcun altro ha un'idea migliore?