标签: nosql

如何存储稀疏邻接矩阵

我读了几个主题,但我迷路了.我对此很陌生.我想存储巨大的稀疏矩阵并有几个想法,但可以在它们之间进行选择.这是我的需求:

  1. 邻接矩阵约.5000万个顶点.
  2. 每个顶点的最大邻居数量 - 大约 10 000.
  3. 每个顶点的平均邻居数量 - 约.200-300.
  4. 快速行查询 - 向量将乘以此矩阵.
  5. O(1)增加边缘的复杂性.
  6. 最有可能的是,边缘不会被删除.
  7. 枚举与v相邻的顶点 - 尽可能快.
  8. 可移植性 - 必须有一种方法将基地从一台计算机转移到另一台计算机.

所以,这是我的想法:

  1. 巨大的桌子对(行,col).非常简单,但顶点的枚举将至少为O(log N),其中N - 表的大小.我觉得它很慢.此外,它必须编入索引.每个RDBMS都有用.
  2. 大量的列表:每个顶点一个列表.枚举非常快,但是存储它不需要太多资源吗?另外,我不确定在这种情况下使用哪个DBMS:也许是一些NoSql?
  3. 巨大的桌子(行|集合).上面两个组合.我不确定是否有任何RDBMS支持任意集.你知道任何?也许NoSql在这里有用吗?
  4. 邻接列表的集合.任何RDBMS都适用于此,并且复杂性方面的成本很高,但是对于一个顶点,可以通过对DB的多个请求来终止它们.
  5. HDF5 - 我认为由于I/O会很慢.
  6. Neo4j - 据我所知,它将数据存储在双链表中,因此它实际上与№4相同,我是对的吗?

请帮助我选择或提供更好的决定.

如果我在某处估计错了,请纠正我.

sql database sparse-matrix bigdata nosql

4
推荐指数
1
解决办法
1514
查看次数

Cassandra - 使用主键列的任意子集按主键搜索

是否有可能在Cassandra中找到主键与所有主键字段的任意子集匹配的记录?

例:

使用下面描述的表,可以找到主键具有特定typename没有指定idsize?的记录.

CREATE TABLE playlists (
  id      uuid,
  type    text,
  name    text,
  size    int,

  artist text,

  PRIMARY KEY (id, type, name, size)
);
Run Code Online (Sandbox Code Playgroud)

谢谢!

cassandra nosql

4
推荐指数
1
解决办法
7444
查看次数

在Tastypie中获取请求参数

我正在为我的应用程序构建一个REST API,它使用Tastypie使用NoSQL db(Neo4j).

所以我覆盖了类的一些主要方法tastypie.resources.Resource,并且目前正在努力实现def obj_get_list(self, request=None, **kwargs):应该返回对象列表.

实际上,我想通过url(类似的东西http://127.0.0.1:8000/api/airport/?query='aQuery')将参数传递给此方法,然后根据此参数执行查询.

问题是请求是None这样我无法得到它的参数!

打印kwargs变量时,我看到:

{'bundle': <Bundle for obj: '<testNeo4Django.testapp.api.Airport object at 0x9d829ac>' and with data: '{}'>}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

python django rest nosql tastypie

4
推荐指数
1
解决办法
5111
查看次数

NodeJS Mongo-猫鼬-动态集合名称

因此,我想创建一个基于客户端的分区模式,在其中将集合名称设置为function(),我的伪代码是这样的:

var mongoose = require('mongoose'),
  Schema = mongoose.Schema,

var ConvForUserSchema = new Schema({
  user_id: Number,
  conv_hash: String,
  archived: Boolean,
  unread: Boolean
}, function CollectionName() {
  return (this.user_id % 10000);
});
Run Code Online (Sandbox Code Playgroud)

是否有可能通过月球使读取和写入都能按预期工作?

mongoose mongodb nosql node.js

4
推荐指数
3
解决办法
4723
查看次数

在cassandra datamodel的唯一Keyspace或多个Keyspace

哪一个最适合使用单个密钥空间或Multiple Keyspace来管理数据,假设一个应用程序拥有更多客户端.每个客户端都会发送大量数据,我们将数据存储在时间序列列中.如果我为每个客户端提供单独的密钥空间,那么Cassandra管理数据会不会很好?如果我在我的应用程序中为一个客户端使用一个键空间,有什么优点和缺点?

java database-design cassandra nosql phpcassa

4
推荐指数
1
解决办法
1881
查看次数

规格模式和DDD

在个人游戏项目的上下文中,为了解有关DDD模式的更多信息,我错过了我的过滤器的Specification对象.

寻找示例,似乎所有内容(如LinQ)都面向SQL数据库.但是对于许多NoSQL数据库而言,大多数查询,即使只是"select*from table"也需要预定义的视图.然而,如果存储库正在映射Web服务,即使查询类型更加严格.

考虑到非SQL数据库的局限性,是否存在规范模式的变体?我觉得这需要使用继承和静态声明来支持不同类型的持久性后端.

我应该如何在我的存储库中组合"排序"和"过滤"?作为示例,请考虑存储库以获取Order项列表.

(Query)findAllSortedByDate;
(Query)findAllSortedByName;
(Query)findAllSortedByQuantity;
Run Code Online (Sandbox Code Playgroud)

因此,当由表格显示时,这些是不同类型的排序.由于我可能会处理大量结果,因此我从不考虑在视图或视图模型中进行排序或过滤.最初我想到了一个Proyection类,它根据用户操作从存储库中选择正确的查询.但是,如果我想在不同的过滤器中组合不同的排序策略,这不会很好.

显然我需要某种类型的"规范"对象,但我不确定是否:

  1. 我应该将它们用于我的存储库,让它们变得更聪明吗?或者我应该将它们用于我的视图模型
  2. 如何正确限制我的规范对象以获得良好的多语言持久性?

最初我考虑使用Repository作为类似集合的接口执行任何查询,但现在我注意到视图模型也可能表现为"有状态"类似集合的接口,而前者是"无状态"类似集合的接口.

  1. 总的来说,我应该尝试在我的存储库中保留任何类型的排序/过滤?如果所有查询结果都可以加载到内存中,那么这样做可能会增加不必要的复杂性.

更新:为了更好地解决这个问题,还要考虑尽管NoSQL视图可以被过滤和排序,但是全文搜索可能需要一个外部索引引擎,例如Lucene或SQLite-FTS,它们只为查询提供实体的唯一标识.再次排序和过滤.

design-patterns domain-driven-design repository nosql polyglot-persistance

4
推荐指数
1
解决办法
1328
查看次数

如何以自然的方式将经常修改的列表存储在数据库中,以便它们可以随时读取?

对于社交网站,我需要为每个实体(以及数百万个此类实体)存储经常修改的列表,这些列表是:

  • 经常附加到
  • 经常看
  • 有时减少
  • 列表由主键键入

我已经在RDBMS中存储了一些其他类型的数据.我知道我可以将这些列表存储在RDBMS中作为多对多关系,如下所示:创建一个listItems包含两列listId&& 的表listItem来生成任何特定列表,只需SELECT查询所有记录WHERE listId = x.但是,当涉及高可伸缩性时,以这种方式将列表存储在RDBMS中并不是非常理想.相反,我希望以自然的方式存储准备好的列表,以便最大限度地提高检索性能.因为每当用户登录并查看页面时,我需要为用户获取大约数百个此类列表.

那么我该如何解决这个问题呢?这个数据应该使用什么样的数据库,可能是那个提供由主键加密的列变量no的数据库,像Cassandra?

mysql database database-design cassandra nosql

4
推荐指数
1
解决办法
379
查看次数

用map-reduce编写一个简单的组(Couchbase)

我是整个map-reduce概念的新手,我正在尝试执行一个简单的map-reduce功能.

我目前正在使用Couchbase服务器作为我的NoSQL数据库.

我想获得所有类型的列表:

key: 1, value: null
key: 2, value: null
key: 3, value: null
Run Code Online (Sandbox Code Playgroud)

这是我的文件:

{
   "type": "1",
   "value": "1"
}

{
   "type": "2",
   "value": "2"
}

{
   "type": "3",
   "value": "3"
}

{
   "type": "1",
   "value": "4"
}
Run Code Online (Sandbox Code Playgroud)

我一直想做的是:写一个地图功能:

function (doc, meta) {
  emit(doc.type, 0);
}
Run Code Online (Sandbox Code Playgroud)

使用内置的reduce功能:

_count
Run Code Online (Sandbox Code Playgroud)

但我没有得到预期的结果.

我怎样才能获得所有类型?

UPDATE

请注意,类型是不同的文档,我知道reduce对文档起作用,不在文档之外执行.

mapreduce nosql couchbase

4
推荐指数
1
解决办法
4409
查看次数

Cassandra CQL3使用复合主键从表中选择行键

我正在使用Cassandra 1.2.7和使用CQL3的官方Java驱动程序.

假设由一个表创建

CREATE TABLE foo ( 
    row int, 
    column int, 
    txt text, 
    PRIMARY KEY (row, column)
);
Run Code Online (Sandbox Code Playgroud)

然后我想预制相当于 SELECT DISTINCT row FROM foo

至于我的理解,应该可以在Cassandra的数据模型中有效地执行这个查询(给定复合主键的实现方式),因为它只是查询'raw'表.

我搜索了CQL文档但我没有找到任何选项来做到这一点.

我的备份计划是创建一个单独的表 - 类似于

CREATE TABLE foo_rows (
    row int,
    PRIMARY KEY (row)
);
Run Code Online (Sandbox Code Playgroud)

但这需要让两者保持同步的麻烦 - 写入foo_rows用于foo中的任何写入(也是性能损失).

那么有没有办法查询不同的行(分区)键?

cql cassandra nosql cql3

4
推荐指数
1
解决办法
6299
查看次数

RethinkDB可以容纳超过几百个嵌入式阵列吗?

http://www.rethinkdb.com/docs/data-modeling/,声明:

由于之前的限制,最好将posts数组的大小保持为不超过几百个文档.

如果我打算保留90天(3个月)的统计数据,并且每个日期可能包含大约10个地区的嵌入式数组.这意味着90*10 = 900.900不完全是几百.

MongoDB关系中的相关问题是:嵌入还是引用?表明MongoDB的限制为16mb,这意味着能够托管3000万条推文或大约250,000个典型的Stackoverflow问题作为嵌入式文档.好多啊!

但是,那就是MongoDB.RethinkDB每个文档的限制为10mb.哪个应该还是相当高的.RethinkDB的文档可能存在缺陷.或者还有另一个特定的原因(未解释)为什么Rethinkdb建议只将它保持在几百个嵌入式阵列中,即使10mb可以明显地保持更多.

我所指的架构的粗略概念:

DailyStat::Campaign
[
  {
    id: '32141241dkfjhjksdlf',
    days_remaining: 26,
    status: 'running',
    dates: [
      {
        date: 20130926,
        delivered: 1,
        failed: 1,
        clicked: 1,
        top_regions: [
          { region_name: 'Asia', views: 10 },
          { region_name: 'America', views: 10 },
          { region_name: 'Europe', views: 10 },
          { region_name: 'Africa', views: 10 },
          { region_name: 'South East Asia', views: 10 },
          { region_name: 'South America', views: 10 },
          { …
Run Code Online (Sandbox Code Playgroud)

mongodb nosql rethinkdb rethinkdb-ruby

4
推荐指数
1
解决办法
838
查看次数