只是簡單的登錄你不需要數據庫,你可能只需要一個簡單的表。
首先考慮一下,通常EEPROM允許從1000到100000個寫週期。這意味着,如果你寫的單個細胞超過100000個,那麼你的細胞死亡的可能性很高,你不能再寫了。
問題是,允許多少次登錄?選擇正確的數據結構並理解所需的內存量是多少。
瞭解Arduino的計算能力:如果登錄只是2..50,那麼簡單的列表就足夠了。最後的插入是O(1),刪除是O(n),查找是O(n)。然而,鏈接列表將允許您將要刪除的寫入次數減少到一個恆定的小值。
如果登錄數多於50 .. 1000,則使用二分搜索的排序數組就足夠了。插入是O(n),刪除是O(n),查找是O(n log n)。但是,對於刪除和插入,寫入次數爲O(n),由於寫入速度較慢並且可以刻錄單元,所以取決於您想要執行的更新次數。
如果登錄數是1000或更多,則二叉樹是好的。插入是O(n log n),刪除是O(n log n),查找是O(n log n)。好處在於,對於插入和刪除,您只需要一個小而恆定的寫入次數。
另外一個散列表是好的,但他們通常使用更多的內存。插入平均O(1),刪除平均O(1),查找平均O(1)。插入和刪除只需要少量不變的寫入操作,少於二叉樹。正如我所說的,這個數據結構使用更多的內存,速度是有代價的。
你不需要一個真正的關係數據庫,但如果你需要太多的用戶,你可能需要一個外部EEPROM。
當然,您必須將這些數據保存在內部或外部閃存中,否則在重置或關閉機器時會丟失數據庫。
我們也可以說,你不需要存儲用戶名和密碼,你可以存儲密碼和用戶名的散列。如果存在散列的用戶名和密碼,則可以允許登錄。通過這種方式,您可以使用固定大小的內存和更少的內存。例如,您可以使用MD5,它是必須發送MD5哈希的Android手機,即16個字節,因此Arduino必須僅檢查該用戶列表中是否存在該MD5哈希值。 這很簡單快捷。
這是*方式*太寬,無法在SO上回答。你基本上問「我怎麼做這一切?」甚至沒有足夠的研究來提出正確的問題。 –
@BrianRoach我只是要求正確的方式來做到這一點,我並不是在要求細節。 –
@ Eng.Fouad在這種情況下,請避免使用「數據庫」這個詞,因爲數據庫是一種完全不同於你所需要的東西。見[Wikipedia](http://en.wikipedia.org/wiki/Database) –