问题标签 [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.

0 投票
3 回答
507 浏览

.net - .Net 友好、本地、键值对、可复制数据存储

我正在寻找具有非常具体要求的键/值类型数据存储。任何人都知道什么会起作用?

  1. 需要成为某种组件。无需额外安装。
  2. 数据存储需要位于本地硬盘驱动器上。
  3. 我正在将 VB.Net 用于运行 Windows XP 到 7 的桌面应用程序,因此它需要由该环境调用。
  4. 它需要可复制。如果我的应用程序有四个副本在网络上运行,则数据存储的每个本地副本都需要与其他副本进行复制。尽可能接近实时。

前三个很简单,我可以使用开箱即用的 ADO.Net 做到这一点。最后一个,复制,是我没有答案的那个。

这样的动物存在吗?

0 投票
5 回答
4428 浏览

sql - 使用 MySQL 作为键/值数据库的可扩展性

我很想知道使用 MySQL 作为键值数据库与 Redis/MongoDB/CouchDB 相比对性能的影响。我过去使用过 Redis 和 CouchDB,所以我非常熟悉它们的用例,并且知道在 NoSQL 和 MySQL 中存储键/值对会更好。

但情况是这样的:

  • 我们的大部分应用程序已经有很多 MySQL 表
  • 我们在 Heroku 上托管所有内容(只有 MongoDB 和 MySQL,每个应用程序基本上是 1-db-type)
  • 在这种情况下,我们不想使用多个不同的数据库。

所以基本上,我正在寻找一些关于在 MySQL 中拥有键/值表的可伸缩性的信息。也许在三个不同的任意层:

  • 每天 1000 次写入
  • 每小时 1000 次写入
  • 每秒 1000 次写入
  • 每小时 1000 次读取
  • 每秒 1000 次读取

一个实际的例子是构建MixPanel 的 Real-time Web Analytics Tracker 之类的东西,这需要根据流量经常编写。

Wordpress 和其他流行的软件一直在使用它:Post 具有“元”模型,它只是键/值,因此您可以向可以搜索的对象添加任意属性。

另一种选择是将可序列化的哈希存储在 blob 中,但这似乎更糟。

你怎么看?

0 投票
3 回答
2647 浏览

c++ - 为 C++ 寻找易于使用的嵌入式键值存储

我需要编写一个 C++ 应用程序来读取和写入大量数据(超过可用 RAM),但始终以顺序方式进行。

为了将数据保存在未来的证明中并且易于记录,我使用协议缓冲区。然而,协议缓冲区不处理大量数据。

我之前的解决方案包括为每个数据单元创建一个文件(并将它们全部存储在一个目录中),但这似乎不是特别可扩展。

这次我想尝试使用嵌入式数据库。要拥有类似的功能,我只需要存储 key->values 关联(因此 sqlite 似乎有点矫枉过正)。值将是来自 Protocol Buffer 的二进制序列化输出。

我希望数据库能够管理“在内存中保留什么,将什么移动到磁盘 asp”问题,“如何在磁盘上有效地存储大量数据”问题,理想情况下,优化我的顺序读取模式(通过读取之前的下一个条目)。

寻找替代品 我对缺乏替代品感到惊讶。我不想将数据库保留在一个单独的进程中,因为我不需要这种分离(这排除了 redis)。

我发现的唯一选择是 Berkeley DB,但它有一个令人不快的低级 C api。然后,我发现最好的选择是在 Berkeley DB 之上的 stldb4。API 看起来很不错,符合我的需要。

不过我很担心。stldb4似乎很奇怪(它依赖于 libferris 的东西),未维护的解决方案(一年前的最后一个版本),对于一个我认为很常见的问题。

你们中有人对如何管理这个问题有更好的建议吗?

感谢您的回答。

0 投票
3 回答
337 浏览

ruby - 如何解析这个键值对?

这是做的输出puts get_account_entry.inspect

例如,如何提取 :name => "id" 的值?最初我认为它就像一个哈希,所以 get_account_entry[id] 会产生结果,但仔细检查它并没有意义。

但是,我如何获得这些价值观?

Chuck 让我走上了正确的道路,但仍然需要帮助:

这是 ruby​​ 控制台中的输出:

0 投票
2 回答
761 浏览

python - 哪个键值存储有不错的扭曲 API(非阻塞)?

我需要一个可靠的 KV 存储在网络中运行。主要要求:

  1. 网络连接
  2. 具有非阻塞扭曲 API
  3. 可靠,生产就绪。无数据丢失
  4. 写性能比读性能更重要
  5. 对分布式操作和故障转移的支持会很棒(所以我只指定节点列表)
  6. java/ruby/erlang API 也将不胜感激

对 Key (PK) 进行自动增量的额外奖励,因此 SQL(MySQl?Postgres?)也被考虑,它们是否有扭曲的驱动程序?

0 投票
2 回答
20991 浏览

redis - Redis键中冒号的用途是什么

我正在学习如何将 Redis 用于我的项目。我没有想到的一件事是冒号在键名中的确切用途。

我见过这样的键名:

冒号是否将键分成类别并加快查找键的速度?如果是这样,您可以在命名键时使用多个冒号将它们分解为子类别吗?最后,它们与在 Redis 服务器中定义不同的数据库有什么关系吗?

我已经阅读了文档并就此事进行了无数次谷歌搜索,但奇怪的是我找不到任何讨论这个问题的东西。

0 投票
4 回答
2253 浏览

.net - 可以在 Windows 上运行并具有 .Net 客户端的分布式键/值存储?

正如标题所说,有没有人知道任何可以在 Windows 上运行并拥有 .Net 客户端的分布式键/值存储?

谢谢

更新:对不起,忘了补充它需要被持久化。

0 投票
1 回答
579 浏览

scalability - 如何对现有的键值存储进行分片?

假设我们在服务器 A 上有 3Gb 键值存储。我开始觉得我们需要另一台服务器(服务器 B)。因此,我必须将服务器 A 的数据与分片(服务器 A、服务器 B)分开,但是......服务器 A 上的所有键当前都表示为(例如,comment_ids:user_id:10)。

问题 #1:散列当前键名并在分片上分离所有数据的最佳实践是什么?

问题 #2:向分片行添加额外服务器的最佳实践是什么?

PS:对不起我的英语,但我希望我的回答对你来说很清楚。

谢谢你。

PS:这个问题我已经用redistag做了标记,但其实根本不是redis,而是所有的key-value存储。

0 投票
4 回答
841 浏览

mongodb - 评估什么是适合我的 NoSQL 数据库的聪明方法?

这些天似乎有无数的 NoSQL 数据库可用:

  • 沙发数据库
  • MongoDB
  • 卡桑德拉
  • Hadoop

这些工具和 Redis 等可作为 memcached 替代品的工具之间也存在界限。

没有挥手和抛出太多流行语 - 我的问题如下:

一个人如何明智地决定哪种工具对他们的项目最有意义?项目是否与主观答案足够相似,例如:Ruby 比 Python 好或 Python 比 Ruby 好?还是我们在这里谈论苹果和橙子,因为它们各自解决不同的问题?

教育自己了解这一新趋势的最佳方式是什么?

0 投票
3 回答
7714 浏览

sql - 在 ActiveRecord 中存储序列化哈希与键/值数据库对象的优缺点?

如果我有几个对象,每个对象基本上都有一个Profile,我用来存储随机属性的对象是什么,优缺点是什么:

  1. 将序列化的哈希存储在记录的列中,与
  2. 存储一堆作为belong_to主要对象的键/值对象。

代码

假设您有如下 STI 记录:

每个has_one :profile

选项 1. 序列化哈希

选项 2. 键/值存储

你会选择哪个?

假设 99% 的时间我不需要按 custom 搜索settings。只是想知道在性能和未来问题的可能性方面的权衡是什么。定制的数量settings可能在 10 到 50 之间。

我宁愿选择第二个选项,即设置表,因为它遵循 ActiveRecord 面向对象的约定。但我想知道在这种情况下是否会带来过高的性能成本。

注意:我只是想知道 RDBMS。这将非常适合 MongoDB/Redis/CouchDB/等。但我想纯粹了解 SQL 的优缺点。