Quale sarebbe un modo ottimale per organizzare tipi di dati arbitrari in una struttura che consente ricerche complesse (non basate su indici) nei dati senza eseguire il loop-through completo?
Per un po 'di background, non sto cercando una risposta su come progettare un motore Event, piuttosto sto cercando metodi per migliorare un'implementazione corrente.
Con il tour di 5 secondi, ho un'architettura in atto con i seguenti componenti,
- Segnali - Segnala quali gesti eseguire
- Gestisce - Esegue quando viene ricevuto un segnale
- Coda - Gestisce gli handle
- Engine - Gestisce le code e elabora i segnali, i nuovi handle ecc.
La mia attuale implementazione ha alcune insidie,
- I segnali sono attualmente accoppiati in una coda, in questo modo il motore può identificare le code in memoria e i segnali che rappresentano.
- Esistono due distinti archivi di code, indicizzati e non indicizzati, esiste l'indice per le ricerche su stringhe / int's, non-index esiste per segnali complessi come regex, confronti di array ecc.
Penso che potrei avere una soluzione ma vorrei i pensieri di altri che hanno sviluppato sistemi simili.
Con la nuova architettura che ho pensato, sarebbe costituito da quanto segue,
- Le code memorizzerebbero solo una proprietà "data" piuttosto che un segnale che sarebbe passato al motore per il confronto dei segnali.
- Il motore non avrebbe più spazio di archiviazione non indice e indice, piuttosto sarebbe utilizzato un singolo spazio di archiviazione che richiederebbe ricerche loop-through.
La libreria è scritta in PHP (se questo è importante), se vuoi vedere la fonte è a link .