19

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

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

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

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

没有开始一场激烈的战争——我是一个完全的 d/b 新手,只是在寻求建议——这是“最好”的决定吗?我意识到这可能是“一根绳子有多长?” 问题,但任何指针都将受到极大的欢迎。我不介意做大量的阅读和研究,但只是希望你能让我有一个好的开始。谢谢。

ps 再次,完全重写,甚至可能不坚持嵌入式Linux,而是切换到eCos,不要太担心d/b格式之间的一次转换。哦,访问应该不频繁,最多每隔几秒一次。


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

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

4

10 回答 10

25

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

于 2010-01-06T09:13:35.817 回答
13

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

于 2010-01-06T08:43:28.770 回答
6
  • Firebird(以前称为 Interbase)声称可以很好地嵌入。

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

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

于 2010-01-06T08:44:28.747 回答
4

SQLite 可能是一个相当安全的选择。但是,如果性能对您的应用程序非常重要并且您不需要关系数据库,我建议您查看 Berkeley DB链接文本。Berkeley DB 不是关系数据库。换句话说,如果您的数据被分组在不同的表中,并且您经常需要查询需要从多个表中关联数据的结果集,那么您可能需要一个关系数据库。Berkeley DB 更适合诸如查找表之类的事情(即,数据被组织在几个表中,您不需要从多个表中查询数据以生成所需的结果集)。Berkeley DB 速度非常快,但您需要做更多的工作才能充分利用它。

于 2010-01-07T05:27:16.553 回答
3

if you want an alternative, then berkeleydb is worth looking at. it used to be owned by sleepycat software, but is now available from oracle. it's a barebones database engine; is directly programmable (rather than a sql) frontend. it's used as part of the core engine in many major databases, and as the database in many embedded devices - it used to be particularly popular for managing routing tables in routers. it tends to get overlooked these days for more fashionable setups, but i've found it to be decent, solid and for the numbers you are talking about it can be lightning fast.

于 2010-04-03T22:36:53.803 回答
2

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

于 2010-01-06T08:46:31.040 回答
2

SQLite 可以,但如果您打算插入、更新和删除涉及超过 6 万行的数据(全部同时,或任何部分),请不要使用。问题是 VACCUM 关键字必须时不时地执行,它成为性能非常严重的瓶颈,即使它是自动的。

于 2012-08-03T20:36:46.620 回答
2

晚了 8 年,但作为更新:我在使用Raima Database Manager时有过很好的体验。如果您正在寻找占用空间小的数据库,它们可以降至 40k。我喜欢 RDM 的原因之一是平台独立性,它可以在 32 位和 64 位机器之间以及在大端和小端架构之间移植,并且支持大多数操作系统,这意味着您可以在嵌入式上使用它第一篇文章中提到的 Linux 和 eCos。与SQLite相比,随着您添加更好的硬件和用户,它的性能会变得更好

于 2018-10-18T12:54:22.877 回答
1

2010 年 1 月 11 日 Embedded.com 时事通讯很好地涵盖了这个主题。新闻通讯可在 Embedded.com 上找到:Embedded.com Tech Focus Newsletter (1-11-10):Embedding Databases

于 2010-01-11T14:45:45.660 回答
1

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

于 2010-01-06T08:43:55.447 回答