标签: nosql

将cursor用作查询的迭代器

我正在读关于mongodb的文章.来到这个部分http://www.mongodb.org/display/DOCS/Tutorial它说 -

> var cursor = db.things.find();
> printjson(cursor[4]);
{ "_id" : ObjectId("4c220a42f3924d31102bd858"), "x" : 4, "j" : 3 }
Run Code Online (Sandbox Code Playgroud)

"当以这种方式使用游标时,请注意所有访问过的最高值(上面的光标[4])都会同时加载到RAM中.这对于大型结果集来说是不合适的,因为你的内存不足.应该用作任何返回大量元素的查询的迭代器."

如何使用游标作为迭代器与查询?感谢您的帮助

mongodb nosql pymongo

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

如何选择PyMongo只有独特的记录?

如何选择PyMongo只有独特的记录?

>>> db.houses.find({"street":{"$regex": "Fl", "$options":"i"}}).count()
107
>>> for item in db.houses.find({"street":{"$regex": "Fl", "$options":"i"}}):
...  print item["street"]
...
Flatbush Avenue
Flatbush Avenue
Flatbush Avenue
Flatlands Avenue
Flatlands Avenue
Flatlands Avenue
Flatlands Avenue
Flatlands Avenue
Flushing Avenue
Flushing Avenue
...more
Run Code Online (Sandbox Code Playgroud)

如何在回复查询时仅获取"街道"的唯一记录?也就是说,为避免重复记录:

Flatbush Avenue
Flatlands Avenue
Flushing Avenue
Run Code Online (Sandbox Code Playgroud)

python mongodb nosql pymongo

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

为什么Neo4j比SQL快

我是Neo4j的新手,并不能完全理解为什么Neo4j必须比高效的SQL查询更快.是因为数据结构还是底层查询实现?我真的很感激,如果有人可以帮我解决这个问题.

sql neo4j nosql

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

使用CouchDB和IrisCouch为iOS转变为多人游戏

我和我的初创应用公司正在开发一款基于回合制的多人iPhone应用程序.可以说,我们都没有任何数据库或服务器知识.虽然,我们愿意学习.

游戏的流程类似于以下游戏:WordFeud,WordsWithFriends,Rumble等.

让我开始在网上进行大量搜索得到我们:

我们决定使用CouchDB作为存储用户,游戏会话和其他内容的信息的工具.CouchDB是一个开源的noSQL数据库系统.原因是我们已经被教导,它应该支持很多同意的用户.此外,它可以扩展 - 当然,我们希望变得更大.

我们的CouchDB托管在IrisCouch上.IrisCouch是一个"云端"托管服务,专为运行CouchDb而设计.

因此,我们已经启动并运行了CouchDB服务器,并且我们了解了如何从服务器查询数据的基础知识.

我们现在最大的困惑是,我们应该如何根据最佳实践建立系统.现在我们正处于能够接收数据并将数据提交给服务器的位置.

我们的游戏应该与Facebook集成,以便用户可以通过我们的应用程序或通过Facebook注册.之后,他们可以与随机匹配的对手一起玩,或与朋友一起玩.比赛开始后,一名运动员将获得一组问题,在他回答之后,应该通过推送通知通知另一名运动员轮到他们了.经过几轮游戏结束.

此时,我们认为这可能是应用程序流程的最佳解决方案:

  1. 用户连接到另一个用户 - >游戏会话作为名为"游戏"的数据库中的文档打开.
  2. 新创建的文档包含玩家姓名,问题,答案等
  3. 名为"whos_turn"的字段决定两个玩家中的哪一个转为.
  4. 游戏结束后,会话将被删除.

再一次,正如您所看到的,我们在如何真正做到这一点时处于黑暗中,但这是一般性的想法.

所以,我的问题如下:

最好直接从iPhone应用程序或通过Web服务查询数据吗?

设置数据库的最佳方法是什么,以便最好地管理应用程序的流程?

任何可能让我们更接近的信息都会很高兴:)

提前谢谢!

奥拉夫冈德森


编辑#1:我们的Objective-C程序员设法使用CouchDb连接两个iPhone设备.iPhone应用程序由一个表视图组成,它与数据库有并发连接,这样当有人POST到数据库时,它会显示在所有其他连接手机的tableview上.看哪:聊天系统严重无效.

javascript couchdb nosql ios

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

Riak是否建议用于存储和传输大型二进制文件?

比方说,如果我使用Riak数据库存储电影等,我如何将块中的二进制文件流式传输到任何客户端(可能是下载然后播放或直接播放?)Riak建议用于存储大型二进制文件吗?此外,我已经读过某个地方,最大文件是50 MB,否则会导致问题,但这似乎是旧的文档.谁能提供更多信息?

clob mongodb nosql riak

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

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

卡桑德拉:柱族与超级柱族

我有一个要求,我需要我的数据库来存储以下数据:

- For each build, store the results of 3 performance runs. The result includes tps and latency. 
Run Code Online (Sandbox Code Playgroud)

阅读cassandra数据模型,这直接映射到以下格式的超级列族:

BenchmarkSuperColumnFamily= {

build_1: {
   Run1: {1000K, 0.5ms}
   Run2: {1000K, 0.5ms}
   Run3: {1000K, 0.5ms}
}

build_2: {
   Run1: {1000K, 0.5ms}
   Run2: {1000K, 0.5ms}
   Run3: {1000K, 0.5ms}
}
...

}
Run Code Online (Sandbox Code Playgroud)

但是,我在下面的回答中读到,不鼓励使用Super Column系列.我想知道是否有更好的方法为我的要求创建模型.

PS,我从下面的文章中借用了JSONish表示法

database-design cassandra nosql

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

redis - 使用哈希

我正在使用redis为我的Web应用程序实现社交流和通知系统.我是redis的新手,我对哈希及其效率有些怀疑.

我已经阅读了这篇很棒的Instagram帖子 ,我计划实现他们类似的解决方案,以实现最小的存储空间.

正如他们的博客中提到的,他们确实喜欢这样

为了利用散列类型,我们将所有媒体ID分配到1000个桶中(我们只取ID,除以1000并丢弃剩余部分).这决定了我们陷入的关键; 接下来,住在该密钥的散列内,媒体ID为查找键的散列和用户ID值.一个例子,给定媒体ID为1155315,这意味着它属于桶1155(1155315/1000 = 1155):

HSET "mediabucket:1155" "1155315" "939"
HGET "mediabucket:1155" "1155315"
> "939"
Run Code Online (Sandbox Code Playgroud)

因此,不是拥有1000个单独的密钥,而是将它存储在一个具有数千个查找键的哈希中.而我的疑问是,为什么我们不能增加查找键值更加大.

例如: Media ID of 1155315 will fall into mediabucket:115 by dividing it by 10000 甚至更大.

他们为什么要使用一个带有1000个查找键的哈希桶来解决问题.为什么他们不能拥有一个包含100000个查找键的哈希桶.这与效率有关吗?

我需要您在我的Web应用程序中实现有效方法的建议.

PS请!不要说stackoverflow不是用于询问建议而我不知道在哪里可以找到帮助.

谢谢!

python django memcached nosql redis

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

Solr:检查文档是否存在而不检索文档

我需要找出文档是否存在但是Solr服务器中保存的文档非常大,所以如果我使用经典搜索来检索具有指定id的文档并且返回文档,则需要花费太多时间来处理.是否有可能返回例如匹配文档的数量而不检索实际文档?

php solr nosql

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

用于用户设计表单的数据存储区 - NoSQL for EAV的任何优点

我需要在我的软件中通过Web界面允许用户设计的表单创建.即,他们创建一个问题,类型(文本,广播,复选框等),选项(如果需要)(无线电/支票),然后添加,并继续在此过程中,直到他们在表单中创建所有字段.

除了查看/填写/打印它们之外,不会对它们进行任何查询,即它们添加可以无限次填写的"问卷"(有些可能是20次,数百万次).

经过一些研究后,似乎EAV类型的解决方案听起来不错,除了那里有很多负面看法.很多人建议在这种情况下使用NoSQL数据库,但我并没有真正看到它们的优点 - 你仍然拥有一个包含许多字段的表单,然后是许多字段的结果.

某些字段(text/text_area/date)会有一个可能的值,但许多字段也有多个选项(单选按钮,选择下拉菜单,复选框).

这是传统SQL中的示例设计:

form:creator_id,name

form_field:form_id,order,question,type(text,text_area,date,radio,select,check)

form_field_option:form_field_id,名称,值,顺序(用于收音机/选择/检查)

form_result:form_id,application_id(不是我使用的名称,但所有结果都属于'应用程序')

form_field_value:form_result_id,form_field_id,form_field_option_id,value(如果选项字段的值为空,则text_field_option_id的文本字段为空)

基于此构建表单并获得结果似乎相当容易.它可能或可能不完全有效但是说一个典型的形式是5-30个问题,那会不会很糟糕?

把它放在NoSQL数据库中是否有任何优势,即Mongo或类似的东西?如果是这样,你能给我具体的例子,给我一个样本设计吗?我已经看到很多答案,比如'NoSQL更适合这个',但我没有这方面的经验,是因为更快的检索结果,还是什么?使用NoSQL会有什么缺点?

谢谢

mongodb dynamic-forms nosql entity-attribute-value

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