❖ 用户角色用户及角色部分,是使用数据库第一步。这部分功能相对简单,各家基本也都完成等价实现。针对数据库替换场景,这部分的工作量相对不大。❖ 数据类型数据类型部分,情况则相对复杂。Oracle 支持的数据类型范围较广,国内产品大部分实现兼容或等价支持,基本可满足替换要求。不支持的部分主要是部分使用场景较少或Oracle即将废弃的数据类型。但这里需要注意的是,虽然国内产品支持大部分数据类型,但在处理精度、存储空间等方面与Oracle还是有所区别。很多情况下,不能简单照搬原有的数据结构定义,还需要有所甄别调整。很多厂商也提供了迁移工具,方便完成数据类型的对应转换。❖ 字符集及排序字符集方面,常见的中文字符集(gbk、gb18030)及utf8系列字符集是支持重点。各厂商产品基本支持这些字符集,可满足需要。针对字符集排序方面,各家支持力度不同,有的提供多样的排序方式,有的则支持较少。❖ 数据库对象在数据库对象方面,Oracle 支持非常丰富的对象类型,包括但不限于表、索引、分区、视图、序列、同义词、触发器、DB Link等等。针对上述类型对象,国内产品都做了一定程度的兼容。但需要指出的是,Oracle 在这些对象上的功能是比较强大的,国内产品在支持上通常也只完成其基本功能的兼容,其大量复杂功能仍然是不具备的。不能说迁移完成即可,还需分析其原有使用的功能范围,毕竟迁移后功能无法完全覆盖。很多厂商提供的迁移工具,可方便完成数据库对象的迁移工作。❖ 函数函数部分,Oracle支持数百种函数,可以说极大丰富了数据库处理数据的能力。各厂商产品也都做了大量函数部分的工作。针对主要的函数,基本都可实现兼容或等价实现。这里需要注意的是,因为函数在大量应用逻辑中使用,因而采用兼容模式会大幅降低代码改造的工作量,当然有些公司提供的迁移工具中可实现代码逻辑的函数转换工作。❖ SQL语法SQL 语法部分,是 Oracle 颇为复杂的部分,很多基于 Oracle 开发的系统大量使用了 Oracle 的复杂 SQL。这些也成为后续改造迁移工作的重点和难点。各厂商都完成了大量 SQL 语法方面的兼容支持工作。但这部分的覆盖范围非常广,目前各厂商对外文档中对这些的能力描述还都较少。也有部分厂商提供迁移工具,可实现 SQL 语法的转换能力,可以减少迁移改造工作量。此外,这部分还需要关注一点是兼容 SQL 语法不仅是语句可执行,其语义也应是等价的,即执行结果是完全一致的。这方面还需要大量用户改造后的比对验证工作,也希望各厂商能提供此功能方便用户做好迁移工作。❖ 过程化语言过程化语言,是指在数据库端处理数据的一种语言。作为近存储端处理数据的一种手段,其处理是比较高效的。当然这种方式会依赖于数据库实现,且从代码管理角度看不是很好维护。Oracle 支持非常丰富的过程化语言支持,各厂商都在一定程度做了支持,但相对而言还有限。部分厂商提供的迁移工具,也支持将过程化语言转化为外部程序处理方式来解决。从长期角度来讲,过程化语言还是建议逐步减少使用,尽量减少依赖于数据库实现。此外,在分布式架构下,过程化语言的支持更为困难,不同产品差异更大;很多分布式数据库产品都不支持过程化语言。❖ 数据字典/系统视图数据字典,是元数据的存储。系统视图,是反映系统运行状态的一个窗口。通过它们可以快速了解系统的多方面情况。Oracle 数据库提供了非常多的数据字典和系统视图。很多用户也会基于这些字典和视图,去构建自己的监控、DEVOPS系统等。因此,兼容原数据库的字典和视图对用户来说很有意义。目前各厂商都在一定程度上做了支持,但差异还比较明显。❖ SQL引擎SQL 引擎部分,是 Oracle 内核最为强大的组件,提供如查询改写、预编译、CBO、执行计划(展示、缓存、绑定、管理)、自适应游标、提示等非常丰富的能力,可对 SQL 语句及执行做到全方位的管理。这方面国产数据库的差距还比较明显,经常能听到这样的声音"在 Oracle 数据库跑的很好的SQL,在国产库上执行很慢",这大多都是 SQL 引擎差异造成的。❖ 安全特性在安全能力上,Oracle 提供了权限、鉴权、加密、审计、标签、SSL、防火墙、VPD、Wallet 等诸多安全功能。这方面国内厂商产品较 Oracle 还有不小的差距。一方面各家还在持续增强安全能力,一方面通过数据库与生态产品合作,解决企业安全问题。❖ 备份恢复备份恢复,是保障数据安全的底线。Oracle 提供了完善的备份恢复能力,这方面国内厂商产品也基本覆盖了常规的备份恢复需求。但针对更高的需求,如备份集压缩、检验、租户备份等,还是有一定差距。❖ 高可用在高可用方面,Oracle 提供了RAC、ADG等多种架构选择;同时还支持例如闪回等能力。通过多种方式保证系统可用性。国内厂商产品有的在架构层面仿照 Oracle 做了实现,提供多种架构方案;有的则通过分布式架构下的多副本机制,提供较 Oracle 更为灵活及保障性更高的实现。❖ 访问接口Oracle 可通过很多的数据访问接口,如常见的JDBC、OLE DB、ODBC、.NET、Python、Go、PHP、OCI、Pro*C等等,几乎面对不同访问语言都有对应的访问接口可用。特别是很多传统应用基于C、COBOL、ADA等开发,也提供了对应接口。这方面,国内厂商产品大多完成对主流访问接口的支持,部分小众化的语言还不支持。❖ 生态兼容Oracle 具备庞大的生态,上下游有大量的生态企业支持,组成了庞大的生态圈。但因其私有通信协议及较为封闭的环境,在生态兼容上国内厂商很难去共享其已有生态。这点与 MySQL 等开源产品不同,后者的开放性保证其生态繁荣发展。❖ 异构迁移最后谈到的就是在 Oracle 向国产数据库迁移中,能提供的相关能力。这里主要包括结构、数据、过程迁移能力以及研发测试阶段能提供的相关辅助能力(如回放等)。这方面各厂商都提供外部工具辅助用户完成迁移动作。 在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
为了在我的mac上为一个rails项目安装mysql,我遵循了安装Homebrew软件和删除mac端口的在线建议。这是问题开始的地方。rails项目不会构建,我得到这个:[rake--prereqs]rakeaborted!dlopen(/Users/Parker/.rvm/gems/ruby-1.9.3-p448/gems/nokogiri-1.6.0/lib/nokogiri/nokogiri.bundle,9):Librarynotloaded:/opt/local/lib/libiconv.2.dylibReferencedfrom:/Users/Parker/.rvm/gem
plsql连接Oracle超时,完犊子了肯定是服务器断电了。得马上检查Oracle服务器状态1、检查数据库是否启动su-oracle切换到Oracle用户,输入sqlplus/assysdba显示连接状态。如果末尾显示的状态是Connectedtoanidleinstance.证明未启动2、启动数据库startup启动数据库,末尾出现Databaseopened说明数据库启动成功3、查看数据库监听是否正常先quit;断开Oracle连接,使用lsnrctlstatus查看监听状态,如果出现TNS-开头的Nolistener、Connectionrefused等错误,说明监听未启动4、启动数据库
是否有一个SASS扩展可以采用SASS样式表,找到中性属性(例如border-radius)并为其输出所有特定于供应商的属性(例如-webkit-border-radius等)自动?我真的不想手动创建所有混入,也不想手动编写代码。我确定一定有这样的扩展名,但我找不到它。帮忙? 最佳答案 有一个非常好的gem可以满足您的需求。它叫做Bourbon它不会用特定于供应商的css替换您的css,因为它可以像SASS一样工作。它基本上是一个正确生成跨浏览器css的mixin集合。 关于ruby-用
这个问题说明了一切。例如,我有一台安装了ruby1.8.6的服务器。当我尝试sudogeminstallroo时,它给出了错误nokogirirequiresRubyversion>=1.8.7。所以,我想安装与Ruby1.8.6兼容的旧版本roo。但我不知道去哪里搜索。我知道RubyForge,但它也没有说明Ruby的兼容版本。 最佳答案 蛮力方法是获取一个git克隆,搜索它指定的Ruby版本的位置,然后使用gitblame甚至gitpickaxe来确定最后一个没有的版本'没有那个要求。
据我了解,Jekyll兼容Liquid和YAML。但是,是否有插件或可用功能可以使其与.erb(嵌入式Ruby)文件兼容?否则,这是一个不必要的功能还是没有用的东西?Jekyll对Liquid和YAML的内置使用是否会取代.erb将会或可以做什么?谢谢! 最佳答案 使用.erb不适合jekyll,但是你应该使用jekyll-renderinggem。 关于ruby-Jekyll与.erb的兼容性,我们在StackOverflow上找到一个类似的问题: http
我最近将一个ruby库转换为一个gem,这似乎破坏了命令行的可用性作为图书馆工作得很好$ruby-rfoobar-e'pFooBar.question'#=>"answer"作为一个gem,irb知道如何从命令行开关中请求一个gem$irb-rubygems-rfoobarirb(main):001:0>FooBar.question#=>"answer"但对于ruby本身来说同样失败了:$ruby-rubygems-rfoobar-e'pFooBar.question'ruby:nosuchfiletoload--foobar(LoadError)我现在必须这样做吗,这看起来
我目前正在尝试编写一个脚本来遍历输入文件并检查网站上的数据。如果它找到新数据,它会打印到它通过的终端,如果没有,它会告诉我它失败了。反之亦然删除的数据。它工作正常,直到我收到的输入文件包含“™”字符。然后当ruby到达该行时,它会吐出一个错误:PDAPWeb.rb:73:in`include?':incompatiblecharacterencodings:UTF-8andIBM437(Encoding::CompatibilityError)违规行是一个简单的检查,以查看该文本是否存在于页面上。ifbrowser.text.include?(program_name)其中prog
我收到以下错误:incompatiblemarshalfileformat(can'tberead)formatversion4.8required;0.0given在这一行:从我的布局文件的这一部分:true%>true%>我以前从来没有遇到过这个问题,网上的解释对我来说太高级了,或者与制作游戏的人有关,我的项目是一个简单的rails应用程序,我昨天才开始。 最佳答案 您尝试过清算Assets吗?bundleexecrakeassets:clean然后重新编译:bundleexecrakeassets:precompile您是否以
我正在尝试将sinatra应用程序迁移到ruby1.9我正在使用sinatra1.0、rack1.2.0和erb模板当我启动sinatra时它可以工作,但是当我从浏览器请求网页时出现此错误:Encoding::CompatibilityErrorat/incompatiblecharacterencodings:ASCII-8BITandUTF-8所有.rb文件都有这个标题:#!/usr/bin/envruby#encoding:utf-8我认为问题出在erb文件中,即使它显示它是UTF-8编码[user@localhostviews]$filehome.erbhome.erb:U