gpt4 book ai didi

php - 带有 'where' 的 Cassandra (CQL) select 语句不工作

转载 作者:可可西里 更新时间:2023-11-01 13:16:21 26 4
gpt4 key购买 nike

我最近几天在使用 Cassandra。为此,我正在使用 PHPCassa 库。

当我尝试使用以下代码时,它无法正常工作。

 require_once('phpcassa/connection.php');
require_once "phpcassa/columnfamily.php";

// Create new ConnectionPool like you normally would
$pool = new ConnectionPool("newtest");

// Retrieve a raw connection from the ConnectionPool
$raw = $pool->get();

$rows = $raw->client->execute_cql_query("SELECT * FROM User WHERE KEY='phpqa'", cassandra_Compression::NONE);

echo "<pre>";
print_r($rows);
echo "<pre>";

// Return the connection to the pool so it may be used by other callers. Otherwise,
// the connection will be unavailable for use.
$pool->return_connection($raw);
unset($raw);

它没有返回任何内容,我也尝试了以下查询

$rows = $raw->client->execute_cql_query("SELECT * FROM User WHERE age='32'", cassandra_Compression::NONE);
$rows = $raw->client->execute_cql_query("SELECT * FROM User WHERE name='jack'", cassandra_Compression::NONE);

但是当我尝试过的时候

 $rows = $raw->client->execute_cql_query("SELECT * FROM User", cassandra_Compression::NONE);

给出正确答案,显示所有行。请告诉我如何正确使用“WHERE”。

键空间详细信息

Strategy Class:     org.apache.cassandra.locator.SimpleStrategy
Strategy Options: None
Replication Factor: 1

Ring

Start Token: 6064078270600954295
End Token: 6064078270600954295
Endpoints: 127.0.0.1

最佳答案

在 cassandra 中,您不能像往常一样只查询“表”。您需要为可能要查询的每一列设置二级索引。

假设我们有一张 table :

 key      | User |   Age 
----------+----------------
phpqa | Jack | 20

可以直接在键上查询:

SELECT * FROM User WHERE key='phpqa';

但是要执行其他 WHERE 查询,您需要在希望在 WHERE 子句中可用的列上建立二级索引。

如何按照您希望的方式灵活查询:

  1. Secondary indexes如上所述。
  2. 使用复合列作为键。如果您只有 2-3 列要查询,但要通读 this article,这是个好主意。详细说明了如何以及何时使用复合键,这里是如何在 phpcassa 中实现它的链接。 .

关于php - 带有 'where' 的 Cassandra (CQL) select 语句不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15430481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com