我正在开发一个需要以有组织的方式存储大量记录的应用程序.具体来说,我正在撰写个人理财应用程序.您可以想象,此应用程序将包含必须以各种方式排序的金融交易记录:按日期,按金额,按收件人,按帐户等.当然,应用程序需要快速获取,例如,所有某些日期之间的交易,快速总结一些记录,等等.
我还处于设计阶段,我计划使用SQLite作为应用程序的后端存储,因为OS X已经附带了一个SQLite框架.我心里想,抽出数据库连接层以便我可以在其他项目中重用代码,然后我想也许其他人可能已经这样做了.
然后我觉得这可能不是一个好主意.我已经在OS X上阅读了一些关于CoreData的内容,并认为我可能会为此目的使用CoreData.但是,我不知道CoreData是否真的符合我的目标.这似乎更像是一种抽象应用程序控制器并将UI小部件与模型联系起来的方法,而不是提供一个API,使其可以快速,轻松地运行可能对结构化数据进行复杂查询.
所以我的问题实际上是三个相关的部分:
最接近Cocoa的ORM是CoreData.虽然ORM并不安静,但更多的内存对象图可以序列化到磁盘.
它使用基于模型的通用布局,您可以向所述模型添加辅助函数等.它也可以保持参照完整性等,并且不需要使用SQL.
它可以有三个存储后端之一,建议使用SQLLite.我赞成将它用于我当前的应用程序.但是,经过一段时间的测试,我发现它太重了.这应该在10.5+中好一些,但是我的目标是10.4而且我发现它对我的使用来说太耗力/慢.
至于查询它,您通过NSPredicates执行大多数(所有?)查询,然后您可以使用foreignKey样式构造来访问相关模型.它可以安静有用.
它是ActiveRecord,Django的ORM还是SQLAlchemy的全功能?不,但它非常好.
我建议用它进行原型设计,并试着看看它是如何为你工作的.为了进一步阅读,我推荐了Pragmatic Bookshelf 的核心数据手册.我已经阅读并发现它通常对理解核心数据非常有帮助.
归档时间: |
|
查看次数: |
899 次 |
最近记录: |