怎么样" SQL" NoSQL的一部分被执行了吗?

时间:2016-01-18 07:40:03

标签: java sql-server amazon-web-services amazon-dynamodb nosql

所以我想深入研究一个更加注入SQL的混合NoSQL,但我不明白" SQL" NoSQL的一部分被执行。除了我的最终目标是创建一个将转换为此的SQL翻译系统之外,这更多用于学术目的。

所以我有我的查询表达式:

Map<String, AttributeValue> map = new HashMap<String, AttributeValue>();
map.put(":val1", new AttributeValue().withS(partitionKey));
map.put(":val2", new AttributeValue().withS(sortKey.toString()))

DynamoDBQueryExpression<Translate> queryExpression = new DynamoDBQueryExpression<Translate>()
.withKeyConditionExpression("lang = :val1 AND clang >= :val2")
.withExpressionAttributeValues(map);

所以我的问题是:

这个字符串"lang = :val1 AND clang >= :val2"如何工作,我可以真正操作它多少/几个,它是否直接进入SQL? 例如,为什么AWS强制使用:val1代替"lang = "+val1。我尝试了几次搜索源代码和文档,但似乎无法找到解决这个问题的部分。

1 个答案:

答案 0 :(得分:3)

我相信您所指的SQL是传统RDBMS系统(如MySQL / Oracle /等)使用的ANSI / ISO标准。

大多数NoSQL数据库,包括DynamoDB,都不符合标准,也没有尝试实现它(甚至不接近)。

您所指的DynamoDB“查询语言”可以被视为SDK操作而不是语言。 SDK将“语言”转换为DynamoDB中使用的特定API调用,以便更加用户友好。该引擎无意解析这些查询并创建查询执行计划。