如何选择数据库
一般来讲,数据分析的查询不会直接从生产环境的数据库来读取数据,一方面是影响线上性能,另一方面是OLTP的表结构设计更多的是面向插入,而不是读取。如何来选择合适的数据库做数据分析呢?本文给出了四方面的考量,抛砖引玉。
1. 客户要分析什么样的数据
2. 客户分析的数据量是多少
3. 客户工程师团队技术背景,运维能力
4. 预期的数据分析的响应时间
客户要分析什么样的数据
上文已简单介绍了关系型数据库和非关系型数据库的区别,这里就不再赘述。下图是一个简单的分类。
客户分析的数据量是多少
用户需要分析的数据量越大,就越应该考虑非关系型数据库。
上图给出了选择合适数据库的思路。不同的数据库处理数据的能力不同。如果你打算处理1T以下的数据,那么可以使用Postgres或者MySQL,但如果数据量增大到5T以上,需要在扩展性方面下些功夫。当然,各个数据库厂商也在不断的优化性能,像微策略这样的BI平台也在紧跟各个厂商的步伐,对各个数据库的特性进行深入的研究,把数据库新特性运用到BI产品中,给客户深入分析各个数据库的优势劣势, 确保为客户提供最大的投入产出比。
客户工程师团队技术背景,运维能力
客户需要了解自己技术团队的人员结构、技术偏好。如果有强大的技术团队,关系型和非关系型数据库都可选择。一般来讲,非关系型数据库需要更多管理维护的时间。如果没有足够的运维人员,可以选择像Postgres, Google SQL (a hosted MySQL option) 或者 Segment Warehouses (a hosted Redshift) 这样的数据库,要优于Redshift, Aurora or BigQuery等。如果运维人员充足,可以选择Redshift等,为以后强大的扩展性做好准备。从另一个角度来说,分析半结构化数据是也是比较普遍的需求。这样就对数据科学家的技能提出了更大的挑战。面向对象的编程背景,精通Python/R 等语言也是对客户工程师团队的重要考量。
预期的数据分析的响应时间
比如像欺诈检测、系统监控等实时数据分析需要的数据分析相应时间有严格的要求。其他的数据分析比如像电子商务网站的用户留存分析等,并没有实时响应的严格要求。客户需要结合自己的用户场景,来选择合适的数据仓库。如果绝大部分的分析是基于已有的数据,对数据的实时性没有特别高的要求,建议用户选择像Redshift or BigQuery这样的数据库,对数据的读取和合并做了大量的优化。如果客户对实时性要求非常高,可以考虑非结构化的数据库方向和内存数据库方向。
当然,选择用什么样的数据库做数据仓储,只是第一步。以实时分析为例,需要从数据仓库,数据湖,计算引擎等架构方面做出通盘的考虑。
查看方法:
1、查看所有表空间及表空间大小:
select tablespace_name ,sum(bytes) / 1024 / 1024 as MB from dba_data_files group by tablespace_name
2、查看所有表空间对应的数据文件:
select tablespace_name,file_name from dba_data_files
3、修改数据文件大小:
alter database datafile 'H:\ORACLE\PRODUCT\10.1.0\ORADATA\ORACLE\USERS01.DBF' RESIZE 10240M
扩展资料
每张表都是作为“段”来存储的,可以通过user_segments视图查看其相应信息。
段(segments)的定义:如果创建一个堆组织表,则该表就是一个段。
sql:SELECT segment_name AS TABLENAME,BYTES FROM user_segments WHERE segment_name='表名'。
解释:
segment_name 就是要查询的表名(大写),BYTES 为表存储所占用的字节数。本sql的意思就是查询出表名和表所占的存储空间大小。
参考资料
csdn:怎么查看oracle数据库大小
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)