小编Dex*_*spi的帖子

使用CQL3在Cassandra中进行数据版本控制

我在Cassandra中相当n00b(我主要来自RDBMS背景,这里和那里都有一些NoSQL,例如Google的BigTable和MongoDB),并且我正在为自己想要满足的用例进行数据建模。我看了这个这个,甚至这个,但是它们并不是我所需要的。

我有这个基本表:

CREATE TABLE documents (
    itemid_version text,       
    xml_payload text,
    insert_time timestamp,
    PRIMARY KEY (itemid_version)
); 
Run Code Online (Sandbox Code Playgroud)

itemid实际上是一个UUID(并且对于所有文档都是唯一的),并且version是一个int(版本0是“第一个”版本)。 xml_payload是完整的XML文档,并且可能会变得很大。是的,我实际上是在创建版本控制的文档存储。

如您所见,我将两者串联在一起以创建主键,稍后在解释需求和/或用例时,我将解释为什么这样做:

  1. 用户需要获取他想要的单(1)文档,他知道商品ID和版本(不一定是最新的)
  2. 用户需要获得他想要的单(1)文档,他知道商品ID,但不知道最新版本
  3. 用户需要一个(1)文档的版本历史记录。
  4. 用户需要获取他想要的文档列表(1个或多个),他知道商品ID和版本(不一定是最新的)

我将编写执行用例的客户端代码,请原谅语法,因为我想与语言无关

第一个很简单:

$itemid_version = concat($itemid, $version)
$doc = csql("select * from documents where itemid_version = {0};" 
    -f $itemid_version)
Run Code Online (Sandbox Code Playgroud)

现在,为了满足第二和第三个用例,我添加了下表:

CREATE TABLE document_versions (
    itemid uuid,
    version int,
    PRIMARY KEY (itemid, version)
) WITH clustering order by (version DESC);
Run Code Online (Sandbox Code Playgroud)

新记录将添加为新文档,并创建现有文档的新版本

现在我们有了这个(用例#2):

$latest_itemid, $latest_version = csql("select itemid, 
    version from …
Run Code Online (Sandbox Code Playgroud)

cassandra cassandra-2.0

5
推荐指数
2
解决办法
6202
查看次数

迭代Puppet中的哈希键/值

我正在尝试用Puppet更新ASP.NET web.config中的任意appsettings列表(用于部署目的)而且我处于两难境地,主要是因为我是一个真正的傀儡n00b.

我有这个yaml文件(hiera)

---
appSettings:
  setting1: "hello"
  setting2: "world!"
  setting3: "lalala"
Run Code Online (Sandbox Code Playgroud)

setting[x]可以任意跨越的数量(一个appSetting),我想循环遍历散列键/值来更新appSetting/addweb.config中的相应内容(使用execpowershell)问题是我已经搜索了如何迭代的高低上.

我遇到过create_resources,当然这会通过一组预先确定的密钥迭代哈希.同样,密钥名称在清单中是未知的(因此迭代键/值对).

任何指导表示赞赏.

编辑:看起来有一个keys()我可以在哈希上使用的函数并迭代,然后使用hiera_hash('appSettings')来获取哈希值并迭代值.

puppet

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

使用 apigee 代理返回大负载

我们正在将我们的服务迁移到 apigee,但遇到了一个问题。我们有一个返回大负载 (>55MB) 的服务,当我通过定义的 apigee 代理传递它时,它会返回:

{ 
  "fault": { 
    "faultstring" : "Body buffer overflow",
    "detail": {
      "errorcode": "protocol.http.TooBigBody"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

是否有可用于避免这种情况的 apigee 政策和/或代理设置?

而且,不,流媒体不是一种选择。我们需要复制行为,因为我们希望迁移到 apigee 对我们的客户透明。

apigee

3
推荐指数
1
解决办法
2559
查看次数

标签 统计

apigee ×1

cassandra ×1

cassandra-2.0 ×1

puppet ×1