初始化对象或直接从/向数据库读/写是否更有效?

时间:2012-06-12 12:08:06

标签: database sqlite optimization orm loading

我正在创建一个使用SQLite数据库来存储数据的应用。该应用程序类似于任务应用程序,它主要只是抓取并显示数据并在需要时更新它。

我的问题是,是否值得初始化单独的对象(我认为在加载应用程序时会发生这种情况),或者直接从/向数据库读取/写入值是否更好。

我已经看过使用过这两种方法,但是我的直觉说直接与数据库连接要便宜得多,因为内存开销会减少,并且必须从中读取/保存这些值。无论如何最终数据库,但每次加载或更新数据时运行查询都比与对象交互要慢。

至于约束,我在ORM上使用SQLite数据库,因为我希望代码和数据存储尽可能地跨平台,而且我还没有发现任何与Python接口的ORM,( Obj-)C和java,它们是我使用的目标语言。如果有人有任何与每种语言一起使用的建议,请告诉我。

3 个答案:

答案 0 :(得分:0)

我认为缓存会有所帮助,特别是对于经常需要的对象(如用户 - 权限)。

您可以在要存储在缓存中的对象上使用这样的模式,以后随时可以轻松地打开/关闭此缓存(对于java我建议使用ehcache):

getObject (key){
  if(object present in cache) return object from cache;
  load object from database;
  store it to cache;
  return object
}

米哈伊

答案 1 :(得分:0)

通常缓存会有所帮助,尤其是当您对应用程序进行大量并发访问时。

每次你必须去网络服务器时你就会失去时间(你需要去另一个应用程序,通常是去另一个服务器,然后回传数据)。访问本地对象要快得多。

最简单的解决方案是尝试使用缓存开启/关闭类似用户的类,并查看它是否有所作为。

答案 2 :(得分:0)

如果数据库太大,我建议你(创建并)使用SQLite数据库的内存样式;你可以先看一下this。此外,在完成访问/写入内存中的数据库之后,您始终可以将其转储到稍后要使用的文件中;使用sqlite3_backup_init()sqlite3_backup_step()sqlite3_backup_finish() here分别将SQLite数据库加载并保存到内存和磁盘非常简单。

(我不清楚你在ORM中需要什么功能。)