我该如何在Arduino内部存储数据库? 我需要购买外部EEPROM或RAM吗? 我该如何处理该数据库(添加,删除和操纵数据)?
顺便说一下,我的Ardunio类型是UNO。
我该如何在Arduino内部存储数据库? 我需要购买外部EEPROM或RAM吗? 我该如何处理该数据库(添加,删除和操纵数据)?
顺便说一下,我的Ardunio类型是UNO。
对于简单的登录,您不需要数据库,可能只需要一个简单的表格。
首先考虑,通常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,Android手机必须发送MD5哈希,即16个字节,因此Arduino只需检查该MD5哈希是否存在于用户列表中即可。
由于您正在使用蓝牙连接,因此可以简单地验证手机的MAC地址或其他唯一信息。