标签: cql3

如何使用cql引擎将图像存储为cassandra数据库中的Bytes字段?

我想将我的网站图像存储在cassandra数据库中!我必须读取并存储图像的字节.你有一个很好的代码吗?我正在使用python2.7,django框架和cql-engine!

这是我的代码:

1-我的模特:

from cqlengine import columns
from cqlengine.models import Model

class UserImage(Model):
    Email = columns.Text(primary_key=True)
    image=columns.Bytes(required=False)
Run Code Online (Sandbox Code Playgroud)

2-我的表格:

class UserImage(forms.Form):
    image=forms.ImageField()
Run Code Online (Sandbox Code Playgroud)

3-我的观点:

from MainAPP.models import UserImage as UserImageModel
from MainAPP.forms import UsersForms

from django.http import HttpResponse
from cqlengine import connection
from PIL import Image

def UploadImage(request):
    if request.method == 'POST':
        form = UsersForms.UserImage(request.POST, request.FILES)
        if form.is_valid():
            try:
                image_data=Image.open(request.FILES['image'])
            except IOError:
                return HttpResponse("cannot upload %s"% request.FILES['image'].name)
            connection.setup(['127.0.0.1:9160'])
            UserImageModel.create(Email='ebrahimi.omid69@gmail.com', image=image_data)
            return HttpResponse('Stored Successfully!')
    else:
        form= UsersForms.UserImage()
        return render_to_response('Users/uploadImage.html', {'form': form}, context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

我的模板: …

python django cassandra python-2.7 cql3

6
推荐指数
1
解决办法
1616
查看次数

如何使用CQL3在Cassandra中创建复杂的结构

我在cassandra中呈现复杂的数据结构时遇到问题. JSON数据示例:

{
  "A": {
    "A_ID" : "1111"
    "field1": "value1",
    "field2": "value2",
    "field3": [
      {
        "id": "id1",
        "name": "name1",
        "segment": [
          {
            "segment_id": "segment_id_1",
            "segment_name": "segment_name_1",
            "segment_value": "segment_value_1"
          },
          {
            "segment_id": "segment_id_2",
            "segment_name": "segment_name_2",
            "segment_value": "segment_value_2"
          },
          ...
        ]
      },
      {
        "id": "id2",
        "name": "name2",
        "segment": [
          {
            "segment_id": "segment_id_3",
            "segment_name": "segment_name_3",
            "segment_value": "segment_value_3"
          },
          {
            "segment_id": "segment_id_4",
            "segment_name": "segment_name_4",
            "segment_value": "segment_value_4"
          },
          ...
        ]
      },
      ...
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

将仅使用一个查询: 按A_ID查找.

我认为这些数据应该存储在一个TABLE(列族)中,而不需要序列化/反序列化操作,以提高效率.如果CQL不支持嵌套地图和列表,我该怎么做?

data-modeling cql cassandra cql3

6
推荐指数
2
解决办法
6059
查看次数

使用timeuuid CQL进行聚类顺序

我的用例

我想通过时间戳DESC订购结果.但我不希望时间戳成为主键中的第二列,因为这将取决于我的查询功能

例如

create table demo(oid int,cid int,ts timeuuid,PRIMARY KEY (oid,cid,ts)) WITH CLUSTERING ORDER BY (ts DESC);
Run Code Online (Sandbox Code Playgroud)

需要查询:

I want the result for all the below queries to be in DESC order of timestamp

select * from demo where oid = 100;
select * from demo where oid = 100 and cid = 10;
select * from demo where oid = 100 and cid = 100 and ts > minTimeuuid('something');
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用CLUSTERING ORDER IN CQL创建此表并获取此错误

cqlsh:v> create table demo(oid int,cid int,ts …
Run Code Online (Sandbox Code Playgroud)

cql cassandra cql3

6
推荐指数
1
解决办法
9381
查看次数

Astyanax Cassandra双型精密

我正在尝试从具有双类型列的Cassandra表中获取Double值.我用CQL3语法创建了表:

CREATE TABLE data_double (
    datetime timestamp,
    value double,
    primary key (datetime)
    );
Run Code Online (Sandbox Code Playgroud)

我插了一行:

INSERT INTO data_double (datetime,  value) VALUES ('111111111', 123.456);  
Run Code Online (Sandbox Code Playgroud)

当我做:

SELECT * from data_double;
Run Code Online (Sandbox Code Playgroud)

我知道这个值是123.46

为什么价值四舍五入?

谢谢

astyanax cql3 cqlsh cassandra-2.0

6
推荐指数
1
解决办法
3485
查看次数

关于索引的Cassandra IN子句

假设一个简单的表有一个插入(或没有这个插入,并不重要).

CREATE TABLE test (
 x int,
 y int,
 z int,
 PRIMARY KEY (x, y, z)
);


create index z_index on test (z);

insert into test(x, y, z) values (1,2,3);
Run Code Online (Sandbox Code Playgroud)

我很难理解为什么我不能在索引z上使用in子句进行查询:

cqlsh:test> select*from test其中z in(3);
错误请求:PRIMARY KEY部分z不能被限制(前面部分y不受限制或非EQ关系)

可以使用简单的equals谓词:

cqlsh:test> select * from test where z = 3;

 x | y | z
---+---+---
 1 | 2 | 3

(0 rows)
Run Code Online (Sandbox Code Playgroud)

我认为在z上有一个索引会保留从z的特定值到行的映射,但这个假设似乎是错误的.

为什么这不符合我的预期?我猜索引的工作方式不同.

编辑:我正在使用[cqlsh 4.1.1 | Cassandra 2.0.6 | CQL规范3.1.1 | 节俭协议19.39.0]

database cql cassandra nosql cql3

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

了解Cassandra的存储开销

我一直在阅读Cassandra文档的这一部分,发现以下有点令人费解:

确定列开销:

regular_total_column_size = column_name_size + column_value_size + 15

counter - expiring_total_column_size = column_name_size + column_value_size + 23

Cassandra中的每一列都会产生15个字节的开销.由于表中的每一行都可以具有不同的列名以及不同的列数,因此会为每列存储元数据.对于计数器列和到期列,您应该再添加8个字节(总共23个字节).

我为CQL3定义的模式解释上述方法,例如:

CREATE TABLE mykeyspace.mytable(
  id text,
  report_id text,
  subset_id text,
  report_date timestamp,
  start_date timestamp,
  end_date timestamp,
  subset_descr text,
  x int,
  y double,
  z int,
  PRIMARY KEY (id, report_id, subset_id)
);
Run Code Online (Sandbox Code Playgroud)

是每一行将包含列名,如琴弦的元数据report_date,start_date,end_date,等及其类型与数据一起.但是,我不清楚表中的每一行可以有不同的列名是什么意思.这听起来不对我,因为上面的架构是完全静态的,即如果我尝试编写,Cassandra 2.0肯定会抱怨:

INSERT INTO mykeyspace.mytable (id, report_id , subset_id, x, y, z, w) 
VALUES ( 'asd','qwe','rty',100,1.234,12, 123.123);

Bad Request: Unknown identifier …
Run Code Online (Sandbox Code Playgroud)

cql cassandra cql3 cassandra-2.0

6
推荐指数
1
解决办法
3599
查看次数

无法在Mac OS X中启动cqlsh?

我已cassandra 2.0成功安装.当我尝试开始时,cql 3我没有这样的选择:

cassandra -v
2.0.9
./cqlsh -3
Usage: cqlsh [options] [host [port]]

cqlsh: error: no such option: -3
Run Code Online (Sandbox Code Playgroud)

cql cql3 cqlsh cassandra-2.0

6
推荐指数
1
解决办法
2094
查看次数

在Cassandra的Counter Vs Int专栏?

我是Cassandra的新人.我无法理解在表中使用计数器的优点是什么(如果非计数器列不是复合PRIMARY KEY的一部分,甚至在不同的表中也是如此)?为什么我们不使用具有Int类型的列,当我将有一些语句,如x = x ++; 使用int或counter之间有什么不同?
是否可以在Cassandra中使用Int Type的增量或减量?

counter cassandra nosql cql3

6
推荐指数
1
解决办法
3595
查看次数

如何使用Java在Cassandra中检索表名?

如果在CQL shell中使用此代码,我将获得该键空间中所有表的名称.

DESCRIBE TABLES;
Run Code Online (Sandbox Code Playgroud)

我想使用ResulSet检索相同的数据.下面是我在Java中的代码.

String query = "DESCRIBE TABLES;";

ResultSet rs = session.execute(query);
for(Row row  : rs) {
    System.out.println(row);
}   
Run Code Online (Sandbox Code Playgroud)

会话和群集早先已初始化为:

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
Session session = cluster.connect("keyspace_name");
Run Code Online (Sandbox Code Playgroud)

或者我想知道Java代码来检索密钥空间中的表名.

cql cassandra nosql cql3

6
推荐指数
1
解决办法
2403
查看次数

Cassandra宽行/动态列

我是NoSQL的新手。因此,我试图了解一些Cassandra概念,这些概念我从我研究的数十种资料中无法真正得到。

  1. 我应该将宽行和动态列视为同义词吗?还是两个不同的概念?
  2. 在将收集类型的列视为宽行时,我是否正确?
  3. 在我看来,宽行是Cassandra早期版本中的一个概念,只能通过Thrift API创建;而集合类型是宽行的现代版本。
  4. 集合类型是否仍限于64k元素?还是在CQL 3之后,该限制已被删除?

cql cassandra dynamic-columns cql3 cassandra-3.0

6
推荐指数
1
解决办法
2939
查看次数