我正在创建我的实体的文档模型以存储在文档数据库 (RavenDB) 中。我正在建模的领域围绕Incidents
. 事件具有来源、优先级、类别、影响级别和许多其他分类属性。在 RDBMS 中,我有一个事件表,其中包含优先级表、类别表、影响表等的外键,但我不知道如何在文档数据库中处理它(这是我的第一个 Doc BD)。
我有两种类型的参考数据:
简单的查找值:Countries
, States
, Sources
, Languages
。属性:它们只有一个名称,但这是一个多语言系统,因此每种语言都有名称。支持的操作:创建、删除、重命名、停用和合并。
复杂参考数据:与 Simple Lookups 相同,另外:其中一些有很多字段,并且有自己的业务规则和验证规则。例如,两个Priorities
不能具有相同的Rank
值。有些具有更复杂的结构,例如Categories
由Subcategories
.
我应该如何将它们建模为(或作为文档的一部分)?
PS:文档数据库建模指南的链接也将不胜感激
我正在考虑一种设置,在该设置中,实体存储在文档数据库(例如CouchDB)和图形数据库(例如Neo4j)中。基本原理是将每个实体信息(数据,blob,值,复杂的内部结构)存储在文档db中,而将实体关系(父,子,关联实体)存储在图db中。
有没有人做过/看到过/被这样的装置咬过?我应该期待什么样的问题?首先想到的是两阶段提交。但是备份在这里也有问题。
couchdb 2phase-commit neo4j graph-databases document-database
NoSQL数据库可以分类为KV,Document,Columnar和Graph.我一直试图弄清楚哪些NoSQL用于不同的场景,阅读几篇博客/文章,我仍然感到困惑.
让我们说我想存储员工的详细信息.它可以存储在像HBase这样的Columnar DB和像Mongo这样的Document DB中.那么,Columnar与Document的情况是什么?我想根据查询模式,必须选择适当的数据库.
正在使用的技术:
免责声明:
我对CouchDB非常陌生。我能够查询视图Node.js
并且Nano
就很好。我正在寻找更多的概念性解决方案,而不是语法解决方案。
场景:
我正在构建一个非常基本的Web应用程序。我正在尝试从数据库中获取一名棒球运动员,并将其所有数据放入player/profile
页面中。
该球员将属于一个团队。团队有短名和长名。
这是我的数据库:
{ name: "Derek Jeter", homeTown: "Brooklyn, New York", team_id: 10 } // player
{ shortName: "Yankees", longName: "NY Yankees", team_id: 10 } // team
Run Code Online (Sandbox Code Playgroud)
我试图返回一个JSON
看起来像这样的对象:
{ name: "Derek Jeter", shortName: "Yankees" }
Run Code Online (Sandbox Code Playgroud)
我知道我可以将所有内容都包含到一个数据库中,并使用该"type"
属性emit()
基于类型,但是我真的不想这样做。
题:
如何使用Node
和Nano
查询播放器的Derek Jeter
和join
从其他数据库中的其他数据?我知道一个视图除了它所驻留的当前文档外没有其他访问权限,但是必须有另一种方法吗?
我在Stackoverflow和Google上搜索了很多次,但没有发现有人在逃避该"type"
解决方案。
在我的应用程序的 Azure Cosmo DocumentDB 中,出现以下错误
2018-03-27 14:42:057 错误 chmsCosmosDBFruiteService - 无法将 Fruites 添加到客户参考:11416e34-3620-45a4-b3be-b845bbf41762
消息:{“错误”:[“具有指定 id 或名称的资源已存在。”] ActivityId:1b70b944-d581-4640-8785-819400433bb4,请求URI:/apps/8d13f597-c7e4-4d60-8713-8a0e9abaa9ac/services/ce0d287f-0125-482b-b32c-22108b5b0ed3/partition s/42c80a49-8042-4032-8cfd -9937ecea8dcc/replicas/131662740073245648p,RequestStats:,SDK:Microsoft.Azure.Documents.Common/1.21.0.0,StatusCode:冲突2018-03-27 14:42:058错误chmaeGlobalExceptionHandler - 异常:类org.apache.catalina.connector .ClientAbortException 消息:java.io.IOException:现有连接被远程主机强制关闭 2018-03-27 14:42:058 警告 oswsmmaExceptionHandlerExceptionResolver - 无法调用 @ExceptionHandler 方法:public java.util.Map com.hm。 myfeed.api.exception.GlobalExceptionHandler.handleException(java.lang.Exception,org.springframework.web.context.request.WebRequest,javax.servlet.http.HttpServletRequest)org.apache.catalina.connector.ClientAbortException:java.io。 IOException:远程主机在 org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:356) 处强制关闭了 org.apache.catalina.connector.OutputBuffer.flushByteBuffer(OutputBuffer.java:815) 处的现有连接在 org.apache.catalina.connector.OutputBuffer.append(OutputBuffer.java:720) 在 org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:391) 在 org.apache.catalina.connector.OutputBuffer.write (OutputBuffer.java:369)在org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:96)在org.springframework.security.web.util.OnCommitedResponseWrapper $ SaveContextServletOutputStream.write(OnCommitedResponseWrapper.java:639)
我有点不明白这一点。异常发生在代码中,该代码首先检查集合是否存在(存在),然后检查是否不创建它。显然创建将失败,集合存在!
创建函数
try {
fruitesDocument = documentClient.createDocument(getCollectionLink(), fruitesDocument , null, false).getResource();
} catch (DocumentClientException e) {
LOG.error("Could not add fruits for Customer Reference: " + fruitesModel.getId() + " " + e.getMessage()); …
Run Code Online (Sandbox Code Playgroud) 我来自一个SQL世界,其中查找由几个对象属性(published = TRUE或user_id = X)完成,并且在任何地方都没有连接(因为1:1缓存层).似乎文档数据库非常适合我的数据.
我试图找出是否有办法将一个(或多个)对象属性传递给CouchDB map/reduce函数,以便在数据库中查找匹配的文档,而无需为每种文档类型创建数十个视图.
是否可以传递所需的文档属性键以在运行时匹配CouchDB并让它返回匹配的对象(或匹配分页的对象的数量)?
例如,在一个页面上,我想要所有带有doc.user_id
X的帖子doc.published
.在另一个页面上,我可能希望所有带有doc.tags[]
"sport"标签的文档.
我正在尝试学习如何使用RavenDB,为此我创建了一个基本的例子.似乎初始化商店和查询需要花费大量时间!
static void Main( string[] args )
{
const bool createNewEntities = true;
var sw = new Stopwatch();
using( var store = new EmbeddableDocumentStore {DataDirectory = "~\\Data"} )
{
sw.Start();
store.Initialize();
sw.Stop();
Console.WriteLine( "Initialized in {0} ms.", sw.ElapsedMilliseconds );
if (createNewEntities)
{
sw.Reset();
sw.Start();
using( var session = store.OpenSession() )
{
sw.Stop();
Console.WriteLine();
Console.WriteLine( "Opened session in {0} ms.", sw.ElapsedMilliseconds );
for( var i = 0; i < 10; i++ )
{
var entity = new EntityA( "Entity A " …
Run Code Online (Sandbox Code Playgroud) 我想通过更改分区键将文档移动到另一个分区。我在某处读到,必须首先删除该文档,然后必须创建一个具有新分区键的新文档。如果是这样的话,这个事务可以是原子的吗?换句话说,是否可以跨两个分区执行事务并在一个更新/写入操作失败时回滚?
我正在寻找创建一个网站,我想尝试学习对象数据库或文档数据库.我将使用托管服务提供商,因此我将无法安装任何软件.我无法购买任何许可证,因此我需要能够使用免费或开源的对象/文档数据库.是否有任何免费的对象/文档数据库不需要安装某种类型?
假设我们正在构建一个用于存储来自网站或移动应用程序的分析的数据库.事务并不重要(可以删除东西)并且只会减慢速度,支持尽可能多的并发调用,一致性可能是最终的,并且一部分数据将是非结构化的(即用户可以传递随机JSON blob作为分析日志记录调用的参数,我们将存储在DB中.
像Mongo这样的东西对于它来说是一个合理的选择,因为它确实满足了我上面列出的大多数要求.然而,人们常常听说Postgres可以自定义以填充许多不同角色的能力.我想可以禁用交易等.
我对Postgres设置不太熟悉,因此我必须问:实际上是否有可能使Postgres适应我上面列出的要求?
couchdb ×3
c# ×2
nosql ×2
ravendb ×2
.net ×1
acid ×1
azure ×1
couchdb-nano ×1
javascript ×1
neo4j ×1
node.js ×1
postgresql ×1
transactions ×1