如何插入/更新多个记录中Rhomobile的

问题描述:

按照Rhomobile的的performance tip in Rhom API创建/ update_attributes方法,如何插入/更新多个记录中Rhomobile的

我们应该准备整个数据先设置,然后调用创建/ update_attributes方法已有准备更好的性能单个记录,然后调用内部循环创建。

按我的知识,创建方法采用单条记录的对象这样,

@account = Account.create(
    {"name" => "some new record", "industry" => "electronics"} 
) 

所以我不知道如何在一个单一的呼叫创建/更新多条记录?

在此先感谢。

首先,我不知道这会对性能产生多大的影响,无论是正面还是负面,并且从来没有测量过。

也就是说,您可以将所有CRUD调用包装在一个事务中,以最小化打开和关闭的数据库连接。这还可以帮助您保持参照完整性,如果某些记录导致新数据集出现问题,则通过回滚更改。

# Load all DB Models, to ensure they are available before first time import 
Rho::RHO.load_all_sources(); 

# Get instance of DB to work transactions with 
db = ::Rho::RHO.get_db_partitions()['local'] # Get reference to model db 
db.start_transaction() # BEGIN transaction 

... Do all your create/update/deletes 

if (was_import_successful) 
    db.commit # COMMIT transaction 
else 
    db.rollback() # ROLLBACK transaction 
end 
+1

我已经使用这些交易,它+会影响性能。但我需要一种方式,如果有的话,插入多个记录在一个单一的创建查询,就像这样http://*.com/questions/1609637/is-it-possible-to-insert-multiple-rows-at-一时间,在-AN-的SQLite数据库 –

使用Rhom,您仍然可以为基础SQLite引擎编写SQL查询。但是你需要了解你使用的表格格式是什么。

默认PropertyBags数据模型都存储在一个键值存储在一个单一的表,如果你正在寻找的最大性能,你最好切换到FixedSchema数据模型。在这种情况下,你会失去一些灵活性,但是你可以获得一些性能并节省相同的空间

我的建议是使用交易,就像你已经在做的那样,切换到FixedSchema数据模型,看看你是否正常。如果你真的需要提高速度,也许你可以用不同的方式实现你想要的,比如导入在服务器端创建的SQLite数据库。

这是RhoConnect用于bulk synchronization的方法。