只是简单的登录你不需要数据库,你可能只需要一个简单的表。
首先考虑一下,通常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) –