如何插入/更新多个记录中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
答
使用Rhom,您仍然可以为基础SQLite引擎编写SQL查询。但是你需要了解你使用的表格格式是什么。
默认PropertyBags数据模型都存储在一个键值存储在一个单一的表,如果你正在寻找的最大性能,你最好切换到FixedSchema数据模型。在这种情况下,你会失去一些灵活性,但是你可以获得一些性能并节省相同的空间
我的建议是使用交易,就像你已经在做的那样,切换到FixedSchema数据模型,看看你是否正常。如果你真的需要提高速度,也许你可以用不同的方式实现你想要的,比如导入在服务器端创建的SQLite数据库。
这是RhoConnect用于bulk synchronization的方法。
我已经使用这些交易,它+会影响性能。但我需要一种方式,如果有的话,插入多个记录在一个单一的创建查询,就像这样http://stackoverflow.com/questions/1609637/is-it-possible-to-insert-multiple-rows-at-一时间,在-AN-的SQLite数据库 –