问题标签 [key-value-store]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
database - 专业的数据库,如 BigTable、SimpleDB
Google BigTable 和 Amazon SimpleDB 等新的学校数据存储范例是专门为可扩展性而设计的。基本上,不允许连接和非规范化是实现此目的的方式。
然而,在这个主题中,共识似乎是大表上的连接不一定必须太昂贵,并且非规范化在某种程度上被“高估”了为什么这些上述系统不允许连接并强制将所有内容放在一起单表实现可扩展性?是需要存储在这些系统中的大量数据(数 TB)吗?
数据库的一般规则是否根本不适用于这些规模?是因为这些数据库类型是专门为存储许多相似的对象而定制的吗?
还是我错过了更大的图景?
java - 需要一个分布式键值查找系统
我需要一种方法来对(可能)数百 GB 的数据进行键值查找。理想情况下,基于分布式哈希表的东西可以很好地与 Java 配合使用。它应该是容错的,并且是开源的。
存储应该是持久的,但理想情况下会将数据缓存在内存中以加快速度。
它应该能够支持来自多台机器的并发读取和写入(尽管读取将是常见的 100 倍)。基本上,目的是对 Web 服务的用户元数据进行快速初始查找。
任何人都可以推荐任何东西吗?
python - 编写键值存储
我正在寻找编写一个键/值存储(可能在 python 中),主要是为了体验,因为我认为这是一个非常有用的产品。我有一些问题。一般来说,键/值对通常如何存储在内存和磁盘中?如何将存储在磁盘上的内容加载回内存?键/值存储是否一次将所有键/值对保存在内存中?还是从磁盘读取?
我试图找到一些关于这个主题的文献,但没有走得很远,希望这里有人能帮助我。
sql - 您将如何在您喜欢的数据库范式中为您的模型实施修订控制系统?
我发现模型的 RCS 是一个在数据持久性方面需要解决的有趣问题。他们是几个使用 django ORM 来实现这个django-reversion和AuditTrail的解决方案,每个解决方案都提出了自己的方法来做到这一点。
这是我想要修改的模型(类似 django-model 的格式):
- 每个修订都应该用日期、修订号、评论和进行修改的用户进行注释。
你会如何在你喜欢的数据库(Mongo、neo4j、CouchDb、GAE Datastore)中做到这一点?
请在每篇文章中仅发布一个 RCS 模型示例。
我不是要完整的代码(也许解释就足够了?)但足以了解如何在每种数据库类型中解决此问题。
xml - 使用搜索引擎作为键值存储的优缺点是什么?
给定一个像 Lucene 这样的搜索引擎和一组需要完全保存的 XML 文档,在给定每个文档包含的唯一主键的情况下,使用搜索引擎作为键值存储返回 XML 文档的优点和缺点是什么?
memcached - 可扩展对象的键值存储
http://www.infoq.com/presentations/newport-evolving-key-value-programming-model是一个关于 KV 存储的视频,整个前提是redis提倡一种基于列的样式来存储对象的属性在单独的键下,而不是序列化一个对象并将其存储在一个键下。
(这个问题不是redis特有的,而是一般的KV商店的一般风格和最佳实践。)
redis 鼓励使用基于列的样式,而不是将对象中的属性存储为单独的键,例如
我很好奇这是否是最佳实践,以及人们是否采取不同的方法。
例如,您可以在单个键下“腌制”一个对象。这具有在单个请求中获取或设置的优点
或者一个人可能是一个列表,第一项是字段名称索引等?
这让我开始思考 - 我想要一个分层密钥存储,例如
然后添加交易:
从扩展的角度来看,get 和 set 的批处理会很重要吗?
是否有关键商店对此提供支持或有其他适用的方法?
database - 你如何混合 SQL DB 与 Key-Value 存储(即 Redis)
我正在审查我的代码并意识到我花费了大量时间
- 从数据库中获取行,
- 格式化为 XML,
- AJAX GET 到浏览器,然后
- 转换回哈希 javascript 对象作为我的本地数据存储。
在更新时,我必须反转这个过程(除了使用 POST 而不是 XML。)
刚开始研究 Redis,我想我可以节省大量时间将对象保存在服务器上的键值存储中,并且只需使用 JSON 直接传输到 JS 客户端。但我虚弱的头脑无法预料离开 SQL DB 会放弃什么(即我害怕放弃 GROUP BY/HAVING 查询)
对于我的数据,我有:
- 多对多关系,即 obj-tags、obj-groups 等。
- 通过组合查询对象,即 WHERE tag IN ('a', 'b','c') AND group in ('x','y')
- 自连接,即每个对象的所有标签 WHERE tag='a' (sql group_concat())
- 很多外连接,即OUTER JOIN rating ON o.id = rating.obj_id
- 和提要,这似乎是 REDIS 的强项
您如何成功地混合键值和 SQL 数据库?
例如,使用 SQL RANGE 查询(即 WHERE obj.id IN (1,4,6,7,8,34,876,9879,567,345, ...), 或相反亦然?
欢迎提出想法/建议。
database - 您在使用 NoSQL 数据存储时遇到了哪些可扩展性问题?
NoSQL 指的是非关系数据存储,它打破了关系数据库的历史和 ACID 保证。流行的开源 NoSQL 数据存储包括:
- Cassandra(表格,用 Java 编写,被 Cisco、WebEx、Digg、Facebook、IBM、Mahalo、Rackspace、Reddit 和 Twitter 使用)
- CouchDB(文档,用 Erlang 编写,由 BBC 和 Engine Yard 使用)
- Dynomite(键值对,用 Erlang 编写,Powerset 使用)
- HBase(键值对,用 Java 编写,由 Bing 使用)
- Hypertable(表格,C++编写,百度使用)
- Kai(键值对,用 Erlang 编写)
- MemcacheDB(键值对,用 C 编写,Reddit 使用)
- MongoDB(文档,用 C++ 编写,由 Electronic Arts、Github、NY Times 和 Sourceforge 使用)
- Neo4j(图表,用 Java 编写,一些瑞典大学使用)
- Project Voldemort(键值对,用 Java 编写,LinkedIn 使用)
- Redis(键值对,用 C 编写,被 Craigslist、Engine Yard 和 Github 使用)
- Riak(键值对,用 Erlang 编写,由 Comcast 和 Mochi Media 使用)
- Ringo(键值对,用 Erlang 编写,诺基亚使用)
- Scalaris(键值对,用 Erlang 编写,由 OnScale 使用)
- Terrastore(文档,用 Java 编写)
- ThruDB(文档,用 C++ 编写,由 JunkDepot.com 使用)
- Tokyo Cabinet/Tokyo Tyrant(key-value,用 C 编写,由 Mixi.jp(日本社交网站)使用)
我想了解您(SO 读者)使用数据存储解决的具体问题以及您使用的 NoSQL 数据存储。
问题:
- 您使用 NoSQL 数据存储解决了哪些可扩展性问题?
- 你使用了什么 NoSQL 数据存储?
- 在切换到 NoSQL 数据存储之前,您使用了什么数据库?
我正在寻找第一手经验,所以除非你有,否则请不要回答。
nosql - 为什么键值对 noSQL 数据库比传统关系数据库更快
有人建议我研究键/值对数据系统来替换我一直在使用的关系数据库。
我不太了解的是这如何提高查询效率。据我了解,您将丢弃大量有助于提高查询效率的信息,只需将您的结构数据库变成一个长长的键和值列表?
我完全错过了重点吗?
database - 最快的键值对数据库?
我正在寻找可用的最快的免费键值对数据库。数据库不必是基于服务器的,它可以链接到应用程序中。我知道东京内阁。还有其他建议吗?