我正在使用Django MVC框架开发Web应用程序,API和后端。 Django的一个主要方面是其对模型的ORM的实现。这是一个非常好的ORM。通常,在使用Django时,人们利用现有接口将Django模型映射到特定的DBMS,例如Postgres,MySQL或Oracle。
我对性能和可伸缩性有一些特定的需求,要求,所以我真的想使用AWS的Dynamo DB,因为它具有很高的成本效益,非常好的性能并且可扩展性很好。
虽然我认为Django允许一个人为DBMS实现自己的接口,但如果存在,则在构造一个Django模型时使用现有的DBMS接口显然是有利的。
有人可以推荐使用Django模型接口,以便我可以在使用AWS的Dynamo DB的Django中构建模型吗?
一个人使用MongoDB怎么样?
答案 0 :(得分:1)
您可以尝试Dynamorm或pynamoDB。我没有尝试过,也许他们可以帮忙。
答案 1 :(得分:0)
AWS DynamoDB没有Django模型接口,但是您可以使用AWS提供的boto3软件从该类型的数据库中检索数据。
答案 2 :(得分:0)
这不像现成的用于django的电池,但是无论如何都值得一看。 https://github.com/pynamodb/PynamoDB
答案 3 :(得分:0)
正如其他人所写,Django没有NoSQL DBMS。有第三方软件包,但考虑到NoSQL数据的灵活性,如@slajma所说,没有“现成的电池”。
PynamoDB看起来不错,我从没使用过,所以不推荐。在所有用例中,我遇到的boto3就足够了。设置非常简单,但是细节在于细节(准确地说,在数据结构中以及嵌套的方式)。基本上,需要三个步骤:
最简单的例子:
from dynamodb_json import json_util as dynamodb_json
from .models import YourModel
def get(request, partition_key):
table = boto3.resource(
'dynamodb',
aws_access_key_id=...,
aws_secret_access_key=...,
region_name=...,
).Table(some_table_name)
try:
response = table.get_item(
Key={partition_key: partition_key})
except ClientError as e:
logger.warning(e.response['Error']['Message'])
else:
data_str = response['Item']
_data_dict = dynamodb_json.loads(data_str)
# Validation and modification of incoming data goes here.
data_dict = validation_and_modification(_data_dict)
# Then you can do whatever you need, for example:
obj, created = YourModel.objects.update_or_create(**data_dict)
...
希望这对某人有帮助。在serverless repo中可以找到创建,删除,列出和更新视图的示例。
答案 4 :(得分:-1)
DynamoDB是非关系的,我认为它在体系结构上与Django之类的ORM不兼容。