相关疑难解决方法(0)

如何在数据存储而不是数据库中思考?

例如,Google App Engine使用Google Datastore而不是标准数据库来存储数据.有没有人有使用Google数据存储而不是数据库的提示?似乎我已经训练了我的思想,在直接映射到表结构的对象关系中100%思考,现在很难看到任何不同的东西.我可以理解Google数据存储区的一些好处(例如性能和分发数据的能力),但牺牲了一些好的数据库功能(例如连接).

与Google Datastore或BigTable合作过的人是否有任何与他们合作的好建议?

database google-app-engine google-cloud-datastore google-cloud-platform

182
推荐指数
5
解决办法
2万
查看次数

非关系数据库设计

我有兴趣听听你用过非关系型"nosql"数据库的设计策略- 也就是说,不使用传统关系设计或SQL的(通常是新的)数据存储类(如Hypertable,CouchDB, SimpleDB,Google App Engine数据存储,Voldemort,Cassandra,SQL数据服务等).它们通常也被称为"键/值存储",而在基础上它们就像巨大的分布式持久哈希表.

具体来说,我想了解概念数据设计与这些新数据库的差异.什么更容易,更难,什么不能完成?

  • 您是否想出了在非关系世界中工作得更好的替代设计?

  • 你有没有碰到任何看似不可能的东西?

  • 您是否与任何设计模式弥合了差距,例如从一个设计模式转换为另一个设计模式?

  • 你现在甚至都在做明确的数据模型(例如在UML中),还是让你完全放弃它们以支持半结构化/面向文档的数据blob?

  • 您是否错过了RDBMS提供的任何主要额外服务,例如关系完整性,任意复杂的事务支持,触发器等?

我来自SQL关系数据库背景,所以标准化在我的血液中.也就是说,我获得了非关系数据库的优点,简化和扩展,我的直觉告诉我必须有更丰富的设计功能重叠.你做了什么?

仅供参考,这里有类似主题的StackOverflow讨论:

database nosql

114
推荐指数
3
解决办法
2万
查看次数

使用Amazon SimpleDB有什么意义?

我认为我可以使用SimpleDB来处理我的应用程序中最具挑战性的区域(就缩放而言) - 类似Twitter的评论,但位置在顶部 - 直到我坐下来实际开始实现它SDB.

首先,SDB每个属性值有1000个字节的限制,即使是注释也是不够的(可能需要将更长的值分解为多个属性).

然后,最大域大小为10GB.承诺是您可以扩展而不必担心数据库分片等,因为SDB不会随着数据量的增加而降级.但是如果我理解正确的话,对于域名,我会遇到与分片完全相同的问题,即.在某些时候需要在应用程序级别跨域实现数据记录的分发和查询.

即使对于我在整个应用程序中使用的最简单的对象,即.原子用户评级,SDB不是一个选项,因为它无法计算查询中的平均值(一切都是基于字符串的).因此,要计算对象的平均用户评级,我必须加载所有记录 - 一次250个 - 并在应用程序级别计算它.

我错过了关于SDB的一些事情吗?10GB真的可以用来克服所有SDB限制吗?我真的很热衷于利用SDB,因为我已经使用了S3和EC2,但现在我根本没有看到用例.

database amazon-web-services amazon-simpledb

51
推荐指数
5
解决办法
2万
查看次数

最终的一致性

我正处于设计应用程序的早期阶段,该应用程序必须具有高可用性和可扩展性.出于多种原因,我想为此使用最终的一致性数据模型.我知道并理解为什么这是许多解决方案不受欢迎的架构选择,但在我的案例中这很重要.

我正在寻找真实世界的建议,最佳实践以及在处理分布式/文档式数据库时需要注意的问题.尤其是电子商务(购物车风格)应用程序周围的区域,传统上更容易与关系数据库组合在一起.

我知道使用这些类型的数据库具有挑战性,但是嘿,Google和E-bay使用它们所以它们不能那么难;-)任何建议都会受到赞赏.

couchdb eventual-consistency amazon-simpledb

20
推荐指数
3
解决办法
2714
查看次数

Pro的数据库,如BigTable,SimpleDB

像Google BigTable和Amazon SimpleDB这样的新学校数据存储范例是专门为可扩展性而设计的.基本上,禁止连接和非规范化是实现这一目标的方法.

然而,在这个主题中,共识似乎是大型表上的连接不一定必须太昂贵,并且非规范化在某种程度上被"高估"为什么然后,这些上述系统不允许连接并强制所有连接在一起单表实现可扩展性?是否需要存储在这些系统中的大量数据(许多兆兆字节)?
数据库的一般规则是否根本不适用于这些尺度?是因为这些数据库类型专门用于存储许多类似的对象吗?
或者我错过了一些更大的图片?

database scalability bigtable amazon-simpledb key-value-store

16
推荐指数
2
解决办法
5438
查看次数

GAE - 如何生活没有加入?

示例问题:

实体:

  • 用户包含姓名和朋友列表(用户参考)
  • 博客文章包含标题,内容,日期和作者(用户)

需求:

我想要一个显示标题的页面以及用户朋友最近10篇帖子的博客链接.我还希望能够继续回溯旧条目.

SQL解决方案:

所以在sql land中它会是这样的:

select * from blog_post where user_id in (select friend_id from user_friend where user_id = :userId) order by date

我能想到的GAE解决方案是:

  • 加载用户,遍历好友列表并加载他们最新的博客帖子.最后合并所有博客文章,找到最新的10篇博客文章
  • 在博客文章中列出了将作者作为朋友的所有用户的列表.这将意味着简单的阅读,但在添加拥有大量博客帖子的朋友时会导致配额超载.

我不相信这些解决方案中的任何一个都会扩展.

我确定其他人已经遇到了这个问题,但我已经搜索过,观看谷歌io视频,阅读其他代码......我缺少什么?

python google-app-engine join google-cloud-datastore

13
推荐指数
2
解决办法
2080
查看次数

App Engine数据存储区不支持运算符OR

我正在尝试查询google数据存储区(类似于pm - > persistanceManager):

String filters = "(  field == 'value' ||  field == 'anotherValue' )";
Query query = pm.newQuery(myType.class, filters);
Run Code Online (Sandbox Code Playgroud)

当我执行时 - 我回来了:App Engine数据存储区不支持运算符OR.

对于这类查询,人们体验的最佳方法是什么?

任何帮助赞赏!

java google-app-engine jdoql google-cloud-datastore

3
推荐指数
1
解决办法
6785
查看次数