- 键值存储数据库
临时性:如Memcached。临时性的键值数据库把数据存储在内存中,在两种情况下会造成上数据的丢失,一是断电,而是数据内容超出内存大小。这种处理的好处是非常快。
永久型:如Tokyo Tyrant 、Flare和ROMA
两者兼有型:Redis。Redis首先把数据存在内存中,然后在满足特定条件(默认是15分钟1次以上,5分钟10个以上,1一分钟10000个以上的键发生变化)的时候,将数据同步到硬盘,这样既可以保证数据的处理速度,又可以保证数据的永久性。我的疑惑是:按照这种特定条件的话,数据还是有可能出现丢失的,这种情况是如何解决的呢?还是在使用中根本就不考虑数据完全保存的场景吗。 - 面向文档的数据库
如MongoDB和CouchDB。不定义表结构,可以使用复杂的查询条件来获取数据,但是不支持事务处理和JOIN操作。 - 面向列的数据库
如Cassandra、Hbase和HyperTable属于这种类型。
面向列的数据库适合处理的操作:对大量行的少数列进行读取,对所有行的特定列进行同时更新。我的疑惑是:这种应用场景是哪种呢 应该很少有的吧?