Solo per un semplice accesso non è necessario un database, probabilmente è sufficiente una semplice tabella.
Considerare innanzitutto che in genere le EEPROM consentono da 1000 a 100000 cicli di scrittura. Significa che se scrivi una singola cella più di 100000 hai un'alta probabilità che la tua cella muoia, non puoi più scriverla.
La domanda è: quanti accessi sono consentiti? Si tratta di scegliere la giusta struttura dati e capire qual è la quantità di memoria richiesta.
Conoscere il potere computazionale di Arduino: se gli accessi sono solo 2 .. 50, una semplice lista sarebbe sufficiente. L'inserimento alla fine è O (1), la cancellazione è O (n), la ricerca è O (n). Tuttavia, un elenco collegato consente di ridurre il numero di scritture per la cancellazione a un valore piccolo e costante.
Se gli accessi sono maggiori, 50 .. 1000, è sufficiente una matrice ordinata con ricerca binaria. L'inserimento è O (n), la cancellazione è O (n), la ricerca è O (n log n). Tuttavia il numero di scritture è O (n) sia per la cancellazione che per l'inserimento, e poiché la scrittura è lenta e può bruciare celle, dipende dal numero di aggiornamenti che si desidera eseguire.
Se gli accessi sono 1000 o più un albero binario è buono. L'inserimento è O (n log n), la cancellazione è O (n log n), la ricerca è O (n log n). La cosa buona è che per l'inserimento e la cancellazione hai solo bisogno di un numero piccolo e costante di scritture.
Anche una tabella hash è buona, ma di solito usano più memoria. L'inserimento è mediato O (1), la cancellazione è mediata O (1), la ricerca è mediata O (1). L'inserimento e la cancellazione richiedono solo un piccolo numero costante di operazioni di scrittura, meno di un albero binario. Come ho detto, questa struttura dati utilizza più memoria, la velocità ha un costo.
Non hai bisogno di un vero database relazionale, ma probabilmente se hai bisogno di troppi utenti, hai bisogno di una EEPROM esterna.
Ovviamente, è necessario salvare questi dati in una memoria flash, interna o esterna, o si perderà il database quando si ripristina o si spegne la macchina.
Possiamo anche dire che non è necessario memorizzare nome utente e password, è sufficiente memorizzare un hash della password e del nome utente. Se il nome utente e la password hash esistono, è possibile consentire l'accesso. In questo modo è possibile utilizzare una memoria di dimensioni fisse e meno memoria. È possibile utilizzare MD5, è il telefono Android che deve inviare l'hash MD5, ovvero 16 byte, quindi l'Arduino deve solo verificare se l'hash MD5 esiste nell'elenco degli utenti, ad esempio. E questo è facile e veloce.
Questo è * modo * troppo ampio per ricevere risposta su SO. Stai praticamente chiedendo "Come faccio a fare tutto questo?" senza aver nemmeno studiato abbastanza per fare le domande giuste. –
@BrianRoach Sto solo chiedendo il modo giusto per farlo, non sto chiedendo dettagli. –
@ Eng.Fouad Si prega di evitare il termine "database" in un tale contesto, perché un database è completamente diverso da quello di cui si ha bisogno. Vedi [Wikipedia] (http://en.wikipedia.org/wiki/Database) –