这是一个有点抽象和笼统的问题。我对不同方法的固有(以及特定于实现的)属性感兴趣,以通过大量内部引用(类似图形)和大量属性(类似 JSON)来持久化非结构化数据。
由于图是树的超集,您可以将图 DB(例如 Neo4j)视为文档 DB(例如 MongoDB)的超集。也就是说,图形数据库提供了文档数据库的所有功能,另外还允许循环或具有 native 指针类型,因此您不必手动取消引用外键/ID。 那么,当您向对象/资源添加更多引用时,您是否会遇到一些转折点,您最好使用图形数据库,但以前使用文档存储更好?文档 DB 是否有优势(存储空间、性能?)还是应该始终使用图形 DB,以防将来需要更多引用?
同样,图 DB 和三元存储(例如 RDF 存储)如何比较?图 DB(其中节点和边具有属性)似乎是简单三元组的超集。那么对于什么问题(如果有的话)执行三元存储实际上更好,比如 Neo4j? (RDF 存储的一个优点是有一种标准化的查询语言 - SPARQL - 尽管似乎有很多人不喜欢 SPARQL,因此将其称为缺点。)
我想我的问题是:图模型(带有属性)似乎能够巧妙地表达各种数据,当你进入现实时有什么问题?我想图形数据库的捕获是性能,所以我很想看到一些数字或经验法则,了解加载、查询和修改数据以及内存和持久存储要求时会出现什么样的减速(与文档相比)和三重商店)。水平可扩展性又如何?我的印象是那里的竞争环境很公平。
您认为具有可表达性的图有可能成为没有超大数据的项目的新默认存储模型,还是我们注定要十年 Polyglot Persistence与 RDBMS、JSON 存储和 Graph DB 并存,必须与更多胶水代码集成?
最佳答案
我不确定我是否同意很多人不喜欢 SPARQL 的观点。 SPARQL 1.0 确实有一些缺点,但它很好地解决了它的设计目的,新的迭代 SPARQL 1.1 在此基础上添加了许多人们期望在原始规范中看到的 SQL 构造,包括子查询、聚合& 更新语义。我认为它是标准的,并且您可以期望在每个三元组存储中看到相同的解析和语义,而不是 SQL 方言,这是一个不错的功能。
我还声称所有三元存储都是图形数据库;您可以将属性放在 RDF 中的特定边上,尽管不如使用 Neo4j 的那么好。但是三元存储具有真正的查询语言的优势,一种 w3c 标准数据表示,可以轻松地将您的数据带到另一个三元存储,并且对于许多三元存储,能够执行基于 OWL 的推理。
我对大多数图形数据库的可扩展性一无所知,但一般来说,商业 RDF 数据库的可扩展性很好。所有这些都可以扩展到数十亿个三元组,可以处理大量用例。尽管他们处理规模的方式因供应商而异,以扩大或横向扩展、集群等。您还将看到完全不同的内存和硬件要求,以匹配每个供应商的实现。对我来说,我倾向于直接使用 EC2 实例,通常是 2XL 或 4XL,安装一个足够大的 EBS 来保存数据,我已经准备好了。
此外,一些三元存储与 Lucene 或类似技术集成以提供数据的倒排索引,现在许多存储开始包含地理空间和时间索引。这些是非常有用的功能,我不确定它们在 Neo4j 之类的东西中是否可用。
话虽如此,它们的扩展性不如关系数据库,只是不够成熟。但是,当您拥有“真实”数量的数据时,您也不会被搞砸。当然,三元存储的优势之一是推理,大规模执行是很棘手的,但这也是创建各种 OWL 配置文件的主要原因。但是如果你不提前考虑,你可以把自己画到一个角落里。
我认为图形数据库,特别是三元存储,可以很好地匹配许多正在构建的应用程序,但我不认为这意味着一切都应该用它们来完成。像其他任何东西一样,它们是具有优点和缺点的工具,因此您必须根据您的应用程序做出正确的选择。但如今,它们可能总是值得至少考虑一下。
关于mongodb - 图形数据库与文档数据库与三重存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12043086/
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
我正在编写一个简单的静态Rack应用程序。查看下面的config.ru代码:useRack::Static,:urls=>["/elements","/img","/pages","/users","/css","/js"],:root=>"archive"map'/'dorunProc.new{|env|[200,{'Content-Type'=>'text/html','Cache-Control'=>'public,max-age=6400'},File.open('archive/splash.html',File::RDONLY)]}endmap'/pages/search.
matlab打开matlab,用最简单的imread方法读取一个图像clcclearimg_h=imread('hua.jpg');返回一个数组(矩阵),往往是a*b*cunit8类型解释一下这个三维数组的意思,行数、数和层数,unit8:指数据类型,无符号八位整形,可理解为0~2^8的数三个层数分别代表RGB三个通道图像rgb最常用的是24-位实现方法,即RGB每个通道有256色阶(2^8)。基于这样的24-位RGB模型的色彩空间可以表现256×256×256≈1670万色当imshow传入了一个二维数组,它将以灰度方式绘制;可以把图像拆分为rgb三层,可以以灰度的方式观察它figure(1
我正在尝试在Rails上安装ruby,到目前为止一切都已安装,但是当我尝试使用rakedb:create创建数据库时,我收到一个奇怪的错误:dyld:lazysymbolbindingfailed:Symbolnotfound:_mysql_get_client_infoReferencedfrom:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundleExpectedin:flatnamespacedyld:Symbolnotfound:_mysql_get_client_infoReferencedf
我去了这个website查看Rails5.0.0和Rails5.1.1之间的区别为什么5.1.1不再包含:config/initializers/session_store.rb?谢谢 最佳答案 这是删除它的提交:Setupdefaultsessionstoreinternally,nolongerthroughanapplicationinitializer总而言之,新应用没有该初始化器,session存储默认设置为cookie存储。即与在该初始值设定项的生成版本中指定的值相同。 关于
因此,当我遵循MichaelHartl的RubyonRails教程时,我注意到在用户表中,我们为:email属性添加了一个唯一索引,以提高find的效率方法,因此它不会逐行搜索。到目前为止,我们一直在根据情况使用find_by_email和find_by_id进行搜索。然而,我们从未为:id属性设置索引。:id是否自动索引,因为它在默认情况下是唯一的并且本质上是顺序的?或者情况并非如此,我应该为:id搜索添加索引吗? 最佳答案 大多数数据库(包括sqlite,这是RoR中的默认数据库)会自动索引主键,对于RailsMigration
我已经找到了几个使用datamapper的示例,并且能够让它们正常工作。不过,所有这些示例都是针对sqlite数据库的。我正在尝试将数据映射器与postgresql一起使用。我将datamapper中的调用从sqlite3更改为postgres,并且我已经安装了dm-postgres-adapter。但它仍然不起作用。我还需要做什么? 最佳答案 与SQLite不同,PostgreSQL不将数据库存储在单个文件中。在你拥有createdyourdatabase之后,尝试这样的事情:DataMapper.setup:default,{:
我正在关注Hartl的railstutorial.org并已到达11.4.4:Imageuploadinproduction.我做了什么:注册亚马逊网络服务在AmazonIdentityandAccessManagement中,我创建了一个用户。用户创建成功。在AmazonS3中,我创建了一个新存储桶。设置新存储桶的权限:权限:本教程指示“授予上一步创建的用户读写权限”。但是,在存储桶的“权限”下,未提及新用户名。我只能在每个人、经过身份验证的用户、日志传送、我和亚马逊似乎根据我的名字+数字创建的用户名之间进行选择。我已经通过选择经过身份验证的用户并选中了上传/删除和查看权限的框(而不
我使用的是遗留数据库,所以我无法控制数据模型。他们使用了很多多态链接/连接表,就像这样createtableperson(per_ident,name,...)createtableperson_links(per_ident,obj_name,obj_r_ident)createtablereport(rep_ident,name,...)其中obj_name是表名,obj_r_ident是标识符。因此链接的报告将按如下方式插入:insertintoperson(1,...)insertintoreport(1,...)insertintoreport(2,...)insertint