数据库sharding
- - 数据库 - ITeye博客当团队决定自行实现sharding的时候,DAO层可能是嵌入sharding逻辑的首选位置,因为在这个层面上,每一个DAO的方法都明确地知道需要访问的数据表以及查询参数,借助这些信息可以直接定位到目标shard上,而不必像框架那样需要对SQL进行解析然后再依据配置的规则进行路由. 另一个优势是不会受ORM框架的制约.
Paul Graham向我们展示了一个有趣的比较各种编程语言的方法:阐述各种编程语言都是用来解决什么问题的。我发现这种方法放在数据库上同样好用:
Oracle: 我们需要企业级数据库。
MySQL: Oracle不开源。
PostgreSQL: MySQL的功能不够多。
SQLite: 你可以把我嵌入到任何地方。这样,4种数据库够大家用了。
MongoDB: 为什么我们要用join和模式(schema)?
CouchDB: 为什么我们要有集合(collection)?
Redis: 为什么我们要面向文档?
Memcached: 为什么我们要用硬盘?
Neo4j: SQL缺乏足够的关系。
Bigtable: MongoDB的对web的扩展性不管好。
Hbase: Bigtable不开源。
Cassandra: Bigtable不是Facebook开发的。
Riak: Cassandra不是用Erlang语言编写的。
OrientDB: 让我们把所有东西都放到同一个数据库里!