API简单,光速上手(然后光速踩坑,APP狂闪不止)。这个确实是小团队福音,不需要学习曲线陡峭的CoreData,甚至不用写sql,大家简单阅读下文档,就可以在实际项目中开用了。升级、迁移等都有非常成熟的接口。
性能优秀。简单看过原理,相比于传统数据库 链接 - 查询 - 命中 - 内存拷贝 - 对象序列化 的复杂过程,Realm采用基于内存映射的Zero-Copy技术,速度快一个数量级。而且内部采用了类似git的对象版本管理机制,并发的性能和安全性也不错。
响应式。Realm的查询结果是随数据库变化实时更新的(要求对象在Run Loop线程中),配合KVO或者Realm自带的ObjectNotification,可以轻松构建及时反映数据变化的响应式UI,这点和目前主流的响应式框架(ReactNative,ReactiveCocoa)应该是天作之和了。但是要求使用者改变思路,不然会出现很多诡异的bug。
ORM。虽然Realm自己号称是『为移动开发者定制的全功能数据库』,但是其中确实包含ORM的很多特性,不用手动写中间层了,取出来就是新鲜活泼的对象,everyone is happy。
再说说坑:
无法多线程共享数据库对象。这是Realm设计的要求,跨线程访问的话,只能自己重新query出来。前面说的上手快,踩坑也快,就是因为这个:异步的Block、网络接口的回调、从不同线程发出的通知都会触发这个访问异常。最关键的还是思维方式的转换,Realm其实是要求尽量减少object的传递,虽然是ORM,但毕竟还是是个数据库,该query的地方,还是不要偷懒。
数据库对象管理。这里有很多坑,比如访问一个被删除的对象时,会直接异常;数据库被close后,所有查询出的object都无法使用;修改被管理对象属性,必须在指定block或者数据库事物集中完成,相当于入库,但是一般的对象又没有关系(两者看起来没有任何区别)等等等等。
对业务代码的侵蚀严重。所有的的数据库对象要继承指定的类(没法继承自己的基类了),增删改查,对查询结果处理都有特殊的语法要求,这使得在旧项目中引入Realm或者放弃使用将Realm从项目中剥离都面临很大的成本。
静态库大,还在不断更新。引入这样一个三方静态库会增加App体积,目测大了1M至少了。另外Realm目前还不是很稳定,之前测试ObjectNotification功能,居然会出现偶尔拿不到回调的bug,相比于成熟的sqlite方案,还不是很放心。
总体来说,Realm还是一个值得尝试的存储方案,个人非常看好 Realm + Swift + reactiveCocoa或者Realm + ReactNative的组合,总感觉和Objective-C八字不合。
1.用navicat连接你的数据库。2.在realmd数据库中,打开并查询account表中你的账号id,例如:你的账号id是15。(后面第二个图)
3.account_access表中添加你的账号id ,gmlevel、Realmid
例如:id=15 gmlevel=3(这个不用多说)、Realmid=1(这个必须和你国度服务器Id对应上,这里默认是1)
4.重新启动下服务器,登陆游戏,你的账号获得了GM权限。
随便输入个.account验证下
PS:关于那里有navicat,看下图你的的服务器安装目录TCCN-3.3.3-Trinity7711\tools\navicat下有个 tools文件夹,里面有navicat
C大的3.3.3默认数据库用户是:root
密码:2009
端口是:3306
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)