我应该选择 Hiberlite 将 SQLite 集成到我的 Win/iOS 应用程序中吗?
Posted
技术标签:
【中文标题】我应该选择 Hiberlite 将 SQLite 集成到我的 Win/iOS 应用程序中吗?【英文标题】:Should I choose Hiberlite for integrating SQLite into my Win/iOS application? 【发布时间】:2012-02-29 02:57:10 【问题描述】:我的职业是作曲家,我的计算机科学技能有限,尽管我编写了很多我使用的软件。
将 SQLite 集成为 ios 应用程序中的文件格式和数据库的最合理方法是什么(它也需要在 Windows 上运行,但这是次要问题)?
我一直在研究 Hiberlite,它看起来很棒,但似乎很少使用,而且显然它在嵌入式系统(iOS?)上运行不佳,并且在运行数千个对象时会窒息。在这些条件下跑步时,我无法理解这些瓶颈有多严重。
每 1-10 秒读取数千个对象(约 50,000 个,但这个数字可能会扩大)的设置并定期写入。读取性能更为关键,因为写入操作可能会出现断断续续的情况,但不会影响应用的核心操作。
鉴于这些条件,我应该如何处理 SQLite?我的理解是,如果没有像 Hiberlite 这样的东西,则必须为每个条目读取和重写整个数据库(数百万个条目),效率会降低吗?如果这是最好的方法,是否有很好的资源可以用来实施它?
任何建议将不胜感激。我目前依赖的软件存在缺陷,需要重构,但由于我缺乏经验,我很难找到有关合理方法的信息。
【问题讨论】:
【参考方案1】:我猜您现在可能已经找到了解决方案,但我一直对在 android 和 IOS 上嵌入 SQLite 很感兴趣,并且遇到了许多基于 C++ 的 ORM解决方案。
Hiberlite 看起来可能还没有完全成熟(我没有看到返回数据子集的方法,这是相当标准的)。一个引起我注意的框架是POCO:Data ORM library。它基于SOCI ORM 中使用的基于流的机制。 POCO library 是模块化的并针对嵌入式环境进行了优化(我相信它也具有最小的外部依赖关系)。***有一篇文章here,他们概述了它的一些用户,其中OpenFrameworks 就是其中之一。
WT ORM 看起来也很有趣。
我列出了我在这里找到的一些其他 C++ ORM 框架,不分先后:
http://soci.sourceforge.netwebtoolkit WT DBO ORMhttp://debea.nethttp://www.qxorm.comhttp://sourceforge.net/apps/trac/litesqlhttp://otl.sourceforge.nethttp://cppcms.com/sql/cppdbhttp://dtemplatelib.sourceforge.nethttp://code.google.com/p/qdjango
【讨论】:
感谢您的回复。我刚收到我的 MacBook 邮件,还在研究 ORM。目前,我在 wt:Dbo(我不介意为此付费)和 SOCI 之间左右为难。我对 QxOrm 很感兴趣,但 Qt 把我吓跑了。我的困境的一部分是我想使用依赖注入库(phs 酱),我不确定哪个最适合结合使用,因为大多数 ORM 自己处理实例化和内存管理。我仍处于计划阶段,但我希望在接下来的一两周内搞定。如果您在深入研究时有任何见解,我很想听听。【参考方案2】:对于 iOS,一种快速设置方法是使用 LabQLite Model Generator 生成模型类,将生成的模型类拖放到您的项目中,然后使用 LabQLite 赋予这些模型类生命。对于 iOS 程序员来说,这是一种非常直接的面向对象的方式,可以在 Xcode 项目中控制 SQLite 3 数据库。
免责声明:我在这里推荐的库是我自己开发的。
关于 SQLite 3 的 Windows 集成解决方案,我认为 Big Rich's answer 有一个很好的列表。
【讨论】:
以上是关于我应该选择 Hiberlite 将 SQLite 集成到我的 Win/iOS 应用程序中吗?的主要内容,如果未能解决你的问题,请参考以下文章
我应该将 sqlite 数据库文件写入 Documents 目录还是 Library/Caches?
如何通过iphone中的sqlite获取路径来显示文档目录中保存的图像