我正在构建一个应用程序,该应用程序需要查询大量写入一次且不再更改的数据。我应该使用 MySQL 还是应该使用 SimpleDB 或 BigTable 之类的东西?(我需要写一次,读很多次)
谢谢你。
编辑:我想使用 Heroku,对我来说大超过 5MB。“千行”占用超过 5MB。这就是为什么我想知道是否应该使用 CouchDB、SimpleDB 或 MongoDB,以免支付 Heroku 收取的 15 美元。克服这个问题的建议?谢谢大家的评论!
我正在构建一个应用程序,该应用程序需要查询大量写入一次且不再更改的数据。我应该使用 MySQL 还是应该使用 SimpleDB 或 BigTable 之类的东西?(我需要写一次,读很多次)
谢谢你。
编辑:我想使用 Heroku,对我来说大超过 5MB。“千行”占用超过 5MB。这就是为什么我想知道是否应该使用 CouchDB、SimpleDB 或 MongoDB,以免支付 Heroku 收取的 15 美元。克服这个问题的建议?谢谢大家的评论!
“大量数据”是什么意思?数千、数百万、数十亿行?每行有多少列?你会使用很多连接还是简单的选择?
如果您的表很简单或者您需要使用复杂的 JOIN,我会选择您熟悉的任何 SQL。
如果您的结构很复杂并且面向文档的数据库适合您的需求,我会选择 MongoDB(首选)或 CouchDB。
编辑:根据您的评论 - 数千行并不多。使用您最喜欢的数据库并根据需要设置尽可能多的缓存(阅读有关必要缓存量的更多信息或开始一个新主题)。或者使用 Memcached,但我建议使用数据库缓存,因为它对您来说也很高效且无痛。好运的人!
比您选择的数据库引擎更重要的是您的表结构。您应该阅读 OLAP 数据库结构。另一个考虑因素是您编写的语言,确保对您要使用的数据库的 API 有良好的支持。CouchDB 会很好,因为由于缺少关系/事务,它的开销非常低。
对于“一次写入,多次读取”,非规范化数据库(不浪费周期进行连接等)是一个不错的选择。
因此,您应该设计您的表,以便这些读取必须执行最少数量的 I/O 和连接。您可以对任何数据库执行此操作。重要的是表的结构。
AFAIK、SimpleDB 和 BigTable 是分布式数据库,如果您的用户分布在地理上(从而绕过网络延迟),它们可以提供非常好的查询速度。如果 I/O 延迟不是瓶颈,它们将不会提供太多优势。
您拥有的数据量很小。任何 DBMS 都可以处理几千行。我建议您首先查看一个流行的 SQL DBMS,例如您已经提到的 MySQL。您需要根据功能需求做出选择,而不是关心数据大小。
对于这种小规模的用例,单独的数据库是多余的。只需将您的数据序列化为一个平面文件,然后将其读入您的语言选择的地图数据结构中。
我认为您应该使用非事务性和面向文档的数据库,例如 MongoDB 或 CouchDB 。