Come rendere efficienti gli oggetti in un database?

4

La mia applicazione è simile a un programma CAD molto semplice. L'utente può creare e modificare un database di diverse migliaia di oggetti 3D semplici (ad esempio cubi e sfere). Ogni oggetto ha una posizione, un orientamento e una dimensione. Prevedo di avere questi oggetti serializzati nel database.

Voglio rendere oggetti nel database in viste 3D. Le viste 3D potrebbero essere l'intero database o una particolare query (ad esempio oggetti di una certa dimensione). Le viste dovrebbero sempre riflettere lo stato corrente del database man mano che gli oggetti vengono aggiunti / rimossi.

Quindi la mia domanda è: come posso avere il ciclo di rendering in modo efficiente per accedere al database? Queste sono le opzioni a cui posso pensare:

  1. Fornisce l'accesso diretto al ciclo di rendering al database. Deserializzare oggetti e renderizzare ad ogni ciclo. Sembra inefficiente, ma forse non così male come temo.
  2. Dai al ciclo di rendering l'accesso diretto al database, ma prova a memorizzare i dati in modo tale da non dover essere serializzati.
  3. Crea un'altra struttura dati che rispecchia sempre il database, ma è più semplice da eseguire.
posta murrdpirate 28.12.2016 - 19:53
fonte

1 risposta

2

In generale, non sembra saggio associare una delle parti potenzialmente più lente di un'app (accesso al DB basato sul disco) a una che sia sensibile alle prestazioni (rendering 3D).

Considererei un'astrazione Repository in cui conservi sia una rappresentazione in memoria dei dati sia la Archivio DB, scarico a quest'ultimo quando l'utente ha terminato la modifica; oppure, se la dimensione dei dati è gestibile, un archivio in memoria come Redis o memcached .

Tutto ciò detto, considererei solo quanto sopra se in realtà stai riscontrando problemi di prestazioni o di coerenza dei dati con una configurazione più semplice.

    
risposta data 29.12.2016 - 01:10
fonte

Leggi altre domande sui tag