关系型内存数据库
‘壹’ 数据库种类有哪些,各有什么特点 - 知乎
数据库种类繁多,各有其独特的特点与应用场景。以下是几种主流数据库及其特点的简要介绍:
sql数据库:
- 关系型数据库:如Oracle、MySQL、PostgreSQL和SQLite。
- 特点:数据通过表格形式组织,结构清晰,适用于事务处理和数据完整性要求高的场景。
- 示例应用:Oracle适用于银行等对数据安全性、稳定性和性能要求高的领域。
- 关系型数据库:如Oracle、MySQL、PostgreSQL和SQLite。
NoSQL数据库:
- 非关系型数据库:如HBase、Cassandra、MongoDB等。
- 特点:适应于非结构化数据和海量数据存储,如文档存储、键值对存储等。在处理大规模数据和高并发读写时表现出色。
- 示例应用:HBase适用于大型宽表数据,提供键值对存储;MongoDB适用于非结构化数据存储。
- 非关系型数据库:如HBase、Cassandra、MongoDB等。
OLTP数据库:
- 在线事务处理数据库:主要用于日常交易操作,如银行交易、在线购物等。
- 特点:支持高并发事务处理,保证数据一致性和完整性。
- 常见类型:传统的关系型数据库,如MySQL、Oracle等。
- 在线事务处理数据库:主要用于日常交易操作,如银行交易、在线购物等。
OLAP数据库:
- 在线分析处理数据库:侧重于数据分析和报表生成。
- 特点:支持大数据量查询和分析,提供并行计算能力。
- 示例应用:Hive、Impala、Kylin等,适合于大数据分析和多维度查询。
- 在线分析处理数据库:侧重于数据分析和报表生成。
文档数据库:
- 基于文档的NoSQL数据库:如MongoDB。
- 特点:数据以JSON格式存储,灵活性高,适用于非结构化数据存储。
- 应用场景:适用于需要灵活数据模型的应用场景。
- 基于文档的NoSQL数据库:如MongoDB。
内存数据库:
实时查询引擎:
- 如ClickHouse:
- 特点:高性能列存储数据库,单表查询性能优异。
- 应用场景:适用于高并发的实时查询场景。
- 如ClickHouse:
搜索引擎:
- 如Elasticsearch:
- 特点:提供倒索引和分词功能。
- 应用场景:适用于以搜索为主的业务,如日志搜索和分析。
- 如Elasticsearch:
数据处理与分析工具:
- 如Spark、Flink、BI工具:
- 特点:Spark和Flink是高性能的并行计算引擎,分别适用于批处理和实时流处理;BI工具用于数据可视化。
- 应用场景:用于数据处理、分析和可视化。
- 如Spark、Flink、BI工具:
整体系统架构中的数据库角色:
- 在整体系统架构中,不同类型的数据库承担着不同的角色。例如,PG/MySQL用于存储基本数据,NoSQL数据库处理大数据量业务数据,OLAP数据库进行数据分析,BI工具提供数据可视化等。这些数据库和系统工具共同构成了完整的数据处理和分析体系。
‘贰’ 内存数据库主流的有哪些,并给出各自特点!
内存数据库从范型上可以分为关系型内存数据库和键值型内存数据库。
在实际应用中内存数据库主要是配合oracle或mysql等大型关系数据库使用,关注性能。
作用类似于缓存,并不注重数据完整性和数据一致性。
基于键值型的内存数据库比关系型更加易于使用,性能和可扩展性更好,因此在应用上比关系型的内存数据库使用更多。
比较FastDB、Memcached和Redis主流内存数据库的功能特性。
FastDB的特点包括如下方面:
1、FastDB不支持client-server架构因而所有使用FastDB的应用程序必须运行在同一主机上;
2、fastdb假定整个数据库存在于RAM中,并且依据这个假定优化了查询算法和接口。
3、fastdb没有数据库缓冲管理开销,不需要在数据库文件和缓冲池之间传输数据。
4、整个fastdb的搜索算法和结构是建立在假定所有的数据都存在于内存中的,因此数据换出的效率不会很高。
5、Fastdb支持事务、在线备份以及系统崩溃后的自动恢复。
6、fastdb是一个面向应用的数据库,数据库表通过应用程序的类信息来构造。
FastDB不能支持Java API接口,这使得在本应用下不适合使用FastDB。
Memcached
Memcached是一种基于Key-Value开源缓存服务器系统,主要用做数据库的数据高速缓冲,并不能完全称为数据库。
memcached的API使用三十二位元的循环冗余校验(CRC-32)计算键值后,将资料分散在不同的机器上。当表格满了以后,接下来新增的资料会以LRU机制替换掉。由于 memcached通常只是当作缓存系统使用,所以使用memcached的应用程式在写回较慢的系统时(像是后端的数据库)需要额外的程序更新memcached内的资料。
memcached具有多种语言的客户端开发包,包括:Perl、PHP、JAVA、C、Python、Ruby、C#。
Redis
Redis是一个高性能的key-value数据库。redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了C++、Java、Python,Ruby,Erlang,PHP客户端。