所以我想深入研究一个更加注入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
。我尝试了几次搜索源代码和文档,但似乎无法找到解决这个问题的部分。
答案 0 :(得分:3)
我相信您所指的SQL是传统RDBMS系统(如MySQL / Oracle /等)使用的ANSI / ISO标准。
大多数NoSQL数据库,包括DynamoDB,都不符合标准,也没有尝试实现它(甚至不接近)。
您所指的DynamoDB“查询语言”可以被视为SDK操作而不是语言。 SDK将“语言”转换为DynamoDB中使用的特定API调用,以便更加用户友好。该引擎无意解析这些查询并创建查询执行计划。