我可以在 Amazon SimpleDB 中仅创建域架构(不包含任何数据)吗?

Posted

技术标签:

【中文标题】我可以在 Amazon SimpleDB 中仅创建域架构(不包含任何数据)吗?【英文标题】:Can I create domain schema only (without any data) in Amazon SimpleDB? 【发布时间】:2010-12-26 09:39:06 【问题描述】:

我目前正在评估 Amazon SimpleDB。 SimpleDB 非常灵活,因为它不必具有表(或域)模式。模式随着创建/更新命令的流入而演变。这一切都很好,但是当我使用建模工具(评估 MindScape LightSpeed)时,我需要预先设置模式,以便工具基于模式生成模型。我可以在 SimpleDB 中手工制作域,这确实有帮助,但为此我必须在域上执行至少一个创建操作。我正在寻找仅创建域模式的能力。有什么线索吗?

【问题讨论】:

【参考方案1】:

SimpleDB 中没有架构。

这就是为什么 NoSQL 人建议在将范式转移到这些非关系数据存储之前“忘记”关系数据库的原因。

所以,你不能做你描述的事情。没有数据,就什么都没有。

【讨论】:

非常正确......但如果我依赖 LightSpeed 等工具,我将无法继续使用新范例。我一直在考虑使用 Amazon RDS (mysql),但不想花那么多钱。你知道尊重这种范式的 ORM 吗? 在 LightSpeed Designer 中,您应该能够使用“模型优先方法”。您不需要在模型之前拥有数据库。 (mindscape.co.nz/products/lightspeed/features/designer.aspx)... 或者我没有完全理解你的问题? 从我目前的经验来看,无法从模型中同步 SimpleDB。它只是一种方式(数据库到模型)。对于其他 RDBMS,它可以双向工作。【参考方案2】:

虽然 SimpleDB 确实不支持架构,但如果您对数字数据或日期运行查询,保留一些类型信息就变得至关重要*。大多数 NoSQL 产品都有查询和类型,或者无查询和无类型,但 SimpleDB 选择了查询和无类型。

因此,与主应用程序之外的任何工具集成将要求您:

    在不同的地方存储重复的类型信息 创建您自己的简单架构系统来存储类型信息

选项 2 似乎要好得多,尽管有人提出了建议,但选择它并不意味着您“没有正确的想法”。

S3 可能是此数据的一个不错的选择,您可以将其保存在与您的域同名的文件中,并且可以使用与您的 SimpleDB 帐户相同的 AWS 凭证从任何地方访问它。

将数据存储为attributename=formatname 的列表是我需要做的事情的范围。事实上,您可以将所有这些存储在您域中的一个项目中。唯一的问题是,这个特殊项可能会无意中从您期望实时数据而不是类型信息的域查询中返回。

我不熟悉 MindScape LightSpeed,但这是我发现在使用 SimpleDB 时有用的一般策略,如果产品能够在 S3 中加载/存储文件,那就更好了。

*注意:为了清楚起见,我并不是在谈论重新发明***或尝试将 SimpleDB 用作关系数据库。我说的是数字数据必须使用零填充(到您选择的长度)和偏移值(取决于它是有符号还是无符号)存储,以便与 SimpleDB 的基于字符串的查询语言一起使用.一旦你决定在你的应用程序中使用一种格式或一组格式,如果源代码工具、查询工具需要这些信息,那么将这些信息隐藏在源文件中并分散在源文件中将是愚蠢的、报告工具或任何其他代码。

【讨论】:

以上是关于我可以在 Amazon SimpleDB 中仅创建域架构(不包含任何数据)吗?的主要内容,如果未能解决你的问题,请参考以下文章

无法从 Elastic Beanstalk 连接到 Amazon SimpleDB

使用 Amazon SNS 在 Android GCM 中仅接收默认消息

使用 Amazon Web Services 保守秘密密钥

如何在 Android 应用程序中播放来自 Amazon S3 的视频?

如何在 Amazon Elastic Mapreduce 之上使用 Hive 来处理 Amazon Simple DB 中的数据?

Erlang编程语言详细介绍: