我对Amazon Dynamo DB中的联接有疑问。由于Amazon Dynamo DB是NoSQL数据库,因此不支持联接。我正在寻找用于Dynamo DB表的连接命令的替代解决方案。我正在将Dynamo DB与Android SDK结合使用。
答案 0 :(得分:1)
无法在Dynamo DB中进行联接。
分别查询每个表,并使用结果值继续处理其他表。
答案 1 :(得分:1)
由于DynamoDB是NOSQL数据库,因此不支持RDBMS。因此,您无法在dynamo数据库中联接表。 AWS还有其他支持RDBMS的数据库,例如 AWS Aurora 。
答案 2 :(得分:0)
DynamoDb是一个NoSQl数据库,因此您无法进行联接。 但是,根据我的经验,如果创建正确的数据库设计,您将无可奈何。使用单个表以及主键和辅助键的组合。 这是文档https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-partition-key-design.html
答案 3 :(得分:0)
您不能在DynamoDB中使用联接,但是可以使用GSI索引在单个表中构建数据,以便可以大多数方式查询数据。
因此,在设计数据库结构之前,您需要列出所有需要的查询并设计数据库结构,主要是据此设置索引。
答案 4 :(得分:0)
免责声明:我在Rockset工作-但我答应了。看到这可以帮助您真正轻松地解决此问题。是的,您不能在DynamoDB上进行联接,但是可以使用与Rockset集成的Dyanmodb间接进行联接。
假设您导入了所有适当的库:
public class MainActivity extends AppCompatActivity {
private String url = "https://api.rs2.usw2.rockset.com/v1/orgs/self/ws/commons/lambdas/LambdaName/versions/versionNumber";
private String APIKEY = "ApiKey YOUR APIKEY";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new JSONAsyncTask().execute("url");
}
class JSONAsyncTask extends AsyncTask<String, Void, Boolean> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Boolean doInBackground(String... urls) {
try {
HttpPost httpPost = new HttpPost(url);
HttpClient httpclient = new DefaultHttpClient();
httpPost.addHeader("Authorization" , APIKEY);
httpPost.addHeader("Content-Type" , "application/json");
HttpResponse response = httpclient.execute(httpPost);
int status = response.getStatusLine().getStatusCode();
if (status == 200) {
HttpEntity entity = response.getEntity();
String data = EntityUtils.toString(entity);
Log.e("foo", data);
JSONObject jsono = new JSONObject(data);
return true;
} else {
Log.e("foo", "error" + String.valueOf(status));
}
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return false;
}
protected void onPostExecute(Boolean result) {
}
}
}
从那里,您将获得结果作为日志,然后可以使用该数据执行所需的操作。
虽然不能直接在DyanmoDB上进行JOINS,但如果要构建数据驱动的应用程序,则可以间接使用Rockset。