NoSQL的"SQL"部分是如何执行的?

How is the "SQL" part of NoSQL executed?

所以我想深入了解更多注入 NoSQL 与 SQL 的混合,但我不明白 NoSQL 的 "SQL" 部分是如何执行的。这更多是出于学术目的,但我的最终目标是创建一个 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" 是如何工作的,我如何 much/little 真正操纵它,它是否直接进入 SQL? 例如,为什么 AWS 强制使用 :val1 而不是 "lang = "+val1。我尝试搜索源代码和文档几次,但似乎无法找到准确解决此问题的部分。

我相信您所指的 SQL 是传统 RDBMS 系统使用的 ANSI/ISO 标准,例如 MySQL/Oracle/etc..

大多数 SQL 数据库,包括 DynamoDB,不遵守标准并且不尝试实施它(甚至没有关闭)。

您所指的 DynamoDB "query language" 可以更多地被视为一种 SDK 操作而不是一种语言。 SDK 将 "language" 转换为 DynamoDB 中使用的特定 API 调用,以提高用户友好性。引擎不打算解析这些查询并创建查询执行计划。