什么是嵌入式“最佳”数据库?

时间:2010-01-06 08:40:49

标签: database embedded embedded-database

我是一个嵌入式人,而不是数据库人。我被要求重新设计一个在几个地方存在瓶颈的现有系统。

嵌入式设备基于运行频率为220mHz的ARM 9处理器。

应该有一个50k条目的数据库(可能增加到250k),每个条目有1k数据(最多8个字段)。这是近似的 - 如果有必要,我可以尝试获得更精确的数字。

他们目前正在使用SqlLite 2并计划迁移到SqlLite 3。

没有开始火焰战 - 我是一个完整的d / b新手,只是寻求建议 - 是“最好的”决定吗?我意识到这可能是“一根绳子有多长?”问题,但任何指针都会受到极大的欢迎。我不介意做很多阅读和阅读研究,但只是希望你能让我开始飞速发展。感谢。

p.s再次,完全重写,甚至可能不会使用嵌入式Linux,但切换到eCos,不要太担心d / b格式之间的一次转换。哦,访问应该是不常见的,每隔几秒钟最多只有一次。


编辑:好吧,看起来他们每个只有5个或6个字段的30k条目(可能达到100k或更多),但其中至少有3个可以是记录的搜索键。他们正在玩弄“完全没有d / b,因为数据非常简单”,但在我看来,使用多个键,我们无法使用像quicksort()类型搜索这样的花哨的东西(递归,二进制搜索) )。关于“没有d / b”的任何想法,只是数据结构?

顺便说一句,一个关键是800k - 不确定SqlLite处理得多好(也许用“没有d / b”我必须将800k散列到更小的东西?)

10 个答案:

答案 0 :(得分:24)

SQLite也是几乎所有移动操作系统都选择的数据库。 Android,Iphone OS和Symbian都附带了SQLite,这让我觉得人力资源用于优化这些手机中的处理器(几乎总是ARM)。

答案 1 :(得分:13)

我会坚持使用SQLite,它得到了广泛支持并且功能非常丰富。

答案 2 :(得分:7)

  • Firebird(之前的Interbase)声称可以很好地嵌入。

  • HypersonicQL(HQL)体积小,速度快,并且声称适合嵌入式使用。

唉,我没有个人经验来支持这两种说法。

答案 3 :(得分:4)

SQLite可能是一个非常安全的赌注。但是,如果性能对您的应用程序非常重要,并且您不需要关系数据库,我建议您查看Berkeley DB link text。 Berkeley DB不是关系数据库。换句话说,如果您的数据被分组在不同的表中,并且您经常需要查询需要从多个表中关联数据的结果集,那么您可能需要一个关系数据库。 Berkeley DB更适合于查找表格(例如,数据在几个表中组织,您不需要从多个表中查询数据以生成所需的结果集)。 Berkeley DB非常快,但为了充分利用它,需要更多工作。

答案 4 :(得分:3)

如果您想要替代品,那么 berkeleydb 值得关注。它曾经由sleepycat软件拥有,但现在可从oracle获得。它是一个准系统数据库引擎;是可直接编程的(而不是sql)前端。它被用作许多主要数据库中核心引擎的一部分,并作为许多嵌入式设备中的数据库 - 它曾经特别受欢迎,用于管理路由器中的路由表。 这些日子往往被人们忽视了更多的时尚设置,但我发现它很体面,而且对于你所说的数字它可以快速闪电。

答案 5 :(得分:2)

我也会建议使用sqlite3。 它被许多着名的应用程序使用。

答案 6 :(得分:2)

SQLite没问题,但是如果您计划插入,更新和删除涉及6个以上行(同时全部或任何部分部分)的数据,则不打算使用。问题是VACCUM关键字必须每隔一段时间完成,然后它就会成为一个非常严重的性能瓶颈,即使它是自动的。

答案 7 :(得分:1)

我不熟悉嵌入式系统,但iphone使用arm9,而sqlite作为DB

答案 8 :(得分:1)

01-11-10 Embedded.com时事通讯涵盖了这个主题。该简报可在Embedded.com上找到:Embedded.com Tech Focus Newsletter (1-11-10): Embedding Databases

答案 9 :(得分:1)

晚了8年,但有一个更新:我在使用Raima Database Manager方面有很好的经验。如果您正在寻找占用空间小的数据库,那么它们可以降低到40k。我喜欢RDM的原因之一是平台独立性,它可以在32位和64位计算机之间以及在大端和小端架构之间移植,并且支持大多数操作系统,这意味着您可以在嵌入式系统上使用它。如第一篇文章所述,Linux和eCos。随着您添加更好的硬件和用户(而不是SQLite

),它的性能也会越来越好