首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Realm、WCDB与SQLite移动数据库性能对比测试

简单查询一万次耗时:331ms dispatch 100个block来查询一万次耗时:150ms realm: 9万条数据基础上连续单条插入一万条数据耗时:32851ms。...注意,Realm似乎必须通过事务来插入,所谓的单条插入即是每次都开关一次事务,耗时很多,如果在一次事务中插入一万条,耗时735ms。 已经建立索引。 简单查询一万次耗时:699ms。...按照参考资料[3]中的测试结果,Realm在插入速度上比SQLite慢,比用FMDB快,而查询是比SQLite快的。...NSData及NSString属性不能保存超过16M数据,如果有大的可以分块。...整个开发流程下来非常流畅,除了配置环境时出了问题并且没有资料参考只能自己猜着解决外,代码基本是一气呵成写完完美运行的。

4.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    手把手教你从 Core Data 迁移到 Realm - 简书

    在20万条中进行一次遍历查询,数据和前面的count相似:Realm一秒可以遍历20万条数据31次,而RCore Data只能进行两次查询。 SQLite也只有14次而已。...这是在一次事务每秒插入数据的对比,Realm每秒可以插入9.4万条记录,在这个比较里纯SQLite的性能最好,每秒可以插入17.8万条记录。...,Realm不能处理nil的object的属性。...Core Data的实现确实可以改变属性,然后调用save方法,对比Realm的实现,只是一些小小的不同罢了。 5.迁移查询 另一方面,如果你不能检索查询你的数据,这肯定不是一个持久的方案!...objects不能在线程间被传递,但是Realm properties的副本可以在线程中被传递。

    24410

    Android开发笔记(八十五)手机数据库Realm

    开发者可以不用熟悉SQL语法; 2、使用灵活,可在实体类中自定义类和枚举类型; 3、号称是基于SQLite的ORM框架中性能最好的;(博主没对比greenDAO与直接使用SQLite的性能差异,所以只能是跟其他...这意味着插入数据库后不能立即关闭数据库,因为一旦关闭数据库则内存中的数据马上丢失。若数据采用在文件中持久化,则无需担心关闭数据库导致数据丢失的问题。 build : 完成配置构建。...executeTransaction : 单独对指定Realm执行事务,用于需要对事务失败进行处理的场合。 where : 查询指定表。返回RealmQuery对象。...下面是Realm插入记录的代码示例: mRealm = Realm.getInstance(mConfig); mRealm.beginTransaction(); Country...RealmQuery RealmQuery是数据库查询工具类,其对象由Realm的where方法获得,下面是RealmQuery类的常用方法: 查询条件 isNull : 指定字段为空。

    1.8K20

    Realm数据库 从入门到“放弃”

    5.查询也不能跨线程查询 RLMResults * results = [self selectUserWithAccid:bhUser.accid]; dispatch_async(dispatch_get_global_queue...2.属性名称的长度最大只能支持 63 个 UTF8 字符。 3.NSData以及 NSString属性不能保存超过 16 MB 大小的数据。...5.尽管 Realm 文件可以被多个线程同时访问,但是您不能跨线程处理 Realms、Realm 对象、查询和查询结果。...B+ 树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。B+ 树元素自底向上插入。 Realm会让每一个连接的线程都会有数据在一个特定时刻的快照。...Realm 对象在不同的线程间不能共享 Realm 对象不能在线程间传递的原因就是为了保证隔离性和数据一致性。这样做的目的只有一个,为了速度。

    5.1K20

    Realm技术选型初体验

    在它之上是一个函数式风格的查询api,众多的努力让它比传统的SQLite 操作更快 查看官网介绍:https://realm.io/cn/ Realm的优点 简单易用 速度快 跨平台 高级功能 可视化...(User.class); // 添加查询条件 query.equalTo("name", "John"); query.or().equalTo("name", "Peter"); // 执行查询 RealmResults...(new Realm.Transaction() { @Override public void execute(Realm realm) { // 移除符合条件的单个查询结果...除了简单易用,它有没有一些我们不知道的坑,必须有啊,具体看下以下这篇文章: 说说 Realm 在 Android 上的坑 指明了realm有以下缺点: 线程的限制(realm对象只能被创建它的线程中访问...,不能随意切换) 数据类型(RealmList没有实现Serializable接口,不能通过intent直接传值) 数据库版本迁移问题(需要关注实体类的变更,这。。)

    74210

    安全框架 Shiro 和 Spring Security 如何选择?

    比如对一个文件来说,有的用户只能进行读取,而有的用户可以进行修改。 一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。...Shiro 主要分为两个部分就是认证和授权,在个人感觉来看就是查询数据库做相应的判断而已,Shiro只是一个框架而已,其中的内容需要自己的去构建,前后是自己的,中间是Shiro帮我们去搭建和配置好的。...Realm:Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。...如果缺省的Realm不能满足需求,你还可以插入代表自定义数据源的自己的Realm实现。...客户端"不能直接登录"服务提供商",只能登录授权层,以此将用户与客户端区分开来。"客户端"登录授权层所用的令牌(token),与用户的密码不同。

    13.2K41

    【iOS】基于Realm数据库的记账软件--Realm数据库(一)

    Realm可以轻松地移植到您的项目当中,并且绝大部分常用的功能(比如说插入、查询等等)都可以用一行简单的代码轻松完成!...可视化:Realm 还提供了一个轻量级的数据库查看工具,借助这个工具,开发者可以查看数据库当中的内容,执行简单的插入和删除数据的操作。...除了查询之外,“删增改”等写入操作必须开启事务,否则程序就会崩溃!...查询 Realm查询支持以下三种方式: 1、使用断言字符串查询 /// 获得指定账本的所有账单 MPBookModel *book = [[MPBookManager shareManager] getCurrentBook...]; RLMResults *results = [MPBillModel objectsWhere:@"book=%@", book]; 2、使用 NSPredicate 查询: /// 在指定账本

    1.5K20

    Realm Java 官方教程翻译 (二):Getting Help 及 Models

    这意味着objects并没有被刷新,当修改那些作用于查询中的objects时,将会迅速的反映到结果中来。...这样会使插入数据变慢,然后data文件也会更大,但是查询起来会变的更快。所以推荐在对特定情况下的读取性能上优化时,才添加索引。...不能使用多个字段(复合键)来作为主键。 使用string的字段作为主键,则该字段隐式的被进行了索引注解。...创建和更新object会变慢,但是查询会变快。很难给出一个值来说明性能上的变化,因为这还依赖你的数据集的大小。...除非@PrimaryKeyz注解和@Required注解一起使用,这时候就不能为null。 Customizing Objects 使用RealmObjects和POJOs用法很像。

    14710

    教你一个建立企业通信黑名单的方法

    但对于企业的座机来说却没有黑名单功能,如果你恰好使用了FreeSWITCH作为你们的语音平台,那么一切就变得简单了,我们使用lua就可以实现一个这样的功能,所有来话都去查询下是不是在黑名单中,最后决定是否去接听...首先大家需要知道hash这个api,例如,增加一个值,hash inster/realm/k/v这样就插入到内存中,k就是hello,v就是hello 删除一个值,hash delete/realm/hello...freeswitch@2d57b40823a7> hash insert/realm/hello/world +OK freeswitch@2d57b40823a7> hash select/realm.../realm/hello -ERR no reply 有了以上的基础知识就可以开始了。...当你接到骚扰电话默默的按下9,下次他就不能再来和你“开心”的聊天了。 但是因人而异,不是每一个电话都被认为是骚扰电话,所以要做每个人定义的黑名单。当然也很简单,上面的脚本改一下两个位置就可以了。

    1.5K30

    React-Native数据持久化

    then这个方法内继续处理ret数据 // 而不能在then以外处理 // 也没有办法“变成”同步返回 // 你也可以使用“看似”...而且使用方法 Realm 官方提供的文档都一如既往地详细,所以如果感兴趣,也可以到 Realm说明文档 进行学习(不知是网络问题还是官方没有整理好,我这边中文版文档是打不开的,所以只能看英文版),这边我们直接将里面常用到的内容整理出来...:4, name:'波多野结衣', tel_number:'137xxxxxxxx', city:'xx省xx市xxxxxx'}); }) } 查询数据 查询所有数据:...// 查询所有数据 let persons = realm.objects('Person'); console.log ('name:' + persons[0].name + 'city...:' + persons[0].city) 根据条件查询数据 // 查询 inquireData() { let allData; // 获取Person

    3.9K21

    跟开涛老师学shiro — 授权

    即权限表示在应用中用户能不能访问某个资源,如: 访问用户列表页面 查看/新增/修改/删除用户数据(即很多时候都是CRUD(增查改删)式权限控制) 打印文档等等。。。...另外实例级别的权限验证如果数据量太大也不建议使用,可能造成查询权限及匹配变慢。可以考虑比如在sql查询时加上权限字符串之类的方式在查询时就完成了权限匹配。...另外我们可以使用JdbcRealm,需要做的操作如下: 1、执行sql/ shiro-init-data.sql 插入相关的权限数据; 2、使用shiro-jdbc-authorizer.ini配置文件...,需要设置jdbcRealm.permissionsLookupEnabled 为true来开启权限查询。...来源:《第三章 授权——《跟我学Shiro》》 ————————– 笔记分割线 ———————————— 恩,这么多自定义,一个人做项目,划算吗?

    45620

    快速学习Shiro-Shiro的入门

    Realm域:Shiro从Realm获取安全数据(如用户、角色、权限),就是说SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户进行比较以确定用户身份是否合法;也需要从...Realm得到用户相应的角色/权限进行验证用户是否能进行操作;可以把Realm看成DataSource,即安全数据源 (1)自定义Realm /** * 自定义realm,需要继承AuthorizingRealm...SecurityManager负责真正的身份验证逻辑;它会委托给Authenticator进行身份验证; Authenticator才是真正的身份验证者,Shiro API中核心的身份认证入口点,此处可以自定义插入自己的实现...进行多Realm身份验证; Authenticator会把相应的token传入Realm,从Realm获取身份验证信息,如果没有返回/抛出异常表示身份验证失败了。...获取Subject相应的角色/权限用于匹配传入的角色/权限; Authorizer会判断Realm的角色/权限是否和传入的匹配,如果有多个Realm,会委托给ModularRealmAuthorizer

    56330

    细说shiro之七:缓存

    当权限信息存放在数据库中时,对于每次前端的访问请求都需要进行一次数据库查询。...特别是在大量使用shiro的jsp标签的场景下,对应前端的一个页面访问请求会同时出现很多的权限查询操作,这对于权限信息变化不是很频繁的场景,每次前端页面访问都进行大量的权限数据库查询是非常不经济的。...第二:分别在Realm和SecurityManager定义的缓存管理器,他们有什么区别或联系吗?...使用zookeeper方案的好处是:即便zookeeper节点故障了,也不会导致系统不可用,最多就是不能使用缓存数据而是每次都直接查找数据库。...每次清空缓存之后,Shiro会重新从数据库中查询最新的权限数据进行缓存。

    1.1K20

    【翻译】Realm , ObjectBox ,还是 Room ,哪个适合你?

    庆幸的是,我保证,在这里我并不会去讨论如何写一个很长的又合理的查询语句。...所以,还记得我保证过没有查询语句吗?但是现在我要写一些查询语句了!不过不要担心, Room 包含的一些安全特性,能够提示你万一出现的那些令人讨厌的错误。...但是在如此高的门槛面前,这个崭新的无 SQL 技术库能够和其他的大牌分庭对抗吗?毫无疑问,如果和 Realm 以及 Room 面对面肉搏的话,它必须重拳出击。...查询生成器:使用 ObjectBox 查询对象和编译时错误检查都非常简单。 数据关联:对象的引用/关联是内建的内部类型,它们都属于原生本地引用。...查询同样看上去是 ObjectBox 的一个强项。测试中采用了字符串和索引,结果不言自明。 那么 apk 的大小又如何呢?这几个类库对我们项目的整体速度影响又有几何?

    3.9K30

    细说shiro之一:shiro简介

    A:扩展Realm,可以支持对组进行分配角色,其实就是给该组下的所有用户分配权限。 Q:对数据权限的支持? 在业务系统中定义?...A:扩展org.apache.shiro.realm.Realm,支持动态权限分配。 Q:与Spring集成? A:可以支持与Spring集成,shiro还支持jsp标签。 二....Realm定义了访问数据的方式,用来连接不同的数据源,如:LDAP,关系数据库,配置文件等等。 三....4.shiro框架只能控制操作权限,不能控制数据权限。数据权限与具体的业务紧密关联,无法通过一个通用的框架完成,通常都是利用关系数据库查询过滤实现。...对操作权限的控制有2层含义,其一:用户在前端只能看到对应权限的元素;其二:在后端对用户操作进行权限检查。

    1.2K10

    Apache Shiro权限框架理论介绍

    这些行为演化为在一个应用中能或者不能做的事情。角色通常分配给用户帐户。一个角色拥有一个权限的集合。授权验证时,需要判断当前角色是否拥有指定的权限。这种角色权限可以对该角色进行详细的权限描述。...user:*:manager 部分省略通配符:缺少的部件意味着用户可以访问所有与之匹配的值,比如:user:edit 等价于 user:edit :*、user 等价于 user:*:* 注意:通配符只能从字符串的结尾处省略部件...注意:WEB 应用程序记住身份往往依靠 Cookie,然而Cookie 只能在 Response 被返回后被删除,所以建议在调用subject.logout() 后立即向终端重定向一个新的视图或页面。...---- Shiro权限缓存 缓存是×××能的重要手段,对同一批数据进行多次查询时, 第一次查询走数据库,查询数据后,将数据保存在内存中,第二次以后查询可以直接从内存获取数据,从而不需要和数据库进行交互...这样减少了系统查询数据库的次数,提升了性能。 缓存适合那些经常不变动的数据,比如系统中用户的信息和权限不会经常改变,特别适合缓存起来供下次使用。

    1.2K30
    领券