SonarQube介绍
官网:https://docs.sonarsource.com/sonarqube/latest/
githup:https://github.com/SonarSource
SonarQube是一个自我管理的自动代码审查工具,可系统地帮助您交付精益代码。作为我们的核心要素声呐解决方案,SonarQube 集成到您现有的工作流程中,并检测代码中的问题,以帮助您对项目执行持续的代码检查。产品分析30+ 种不同的编程语言并集成到 DevOps 平台的持续集成 (CI) 管道中,以确保您的代码符合高质量标准。
干净的代码是所有代码的标准,从而产生安全、可靠和可维护的软件,因此,编写干净的代码对于维护健康的代码库至关重要,Sonar 的 Clean as You Code 方法消除了在开发过程后期审查代码时产生的许多陷阱。“即码即净”方法使用质量门,在新代码(已添加或更改的代码)中有需要修复或审查的内容时提醒/通知你,使你能够保持高标准并专注于代码质量。
使用 Sonar 进行开发
组件组成
1.sonarqube server : 他有三个程序分别是 webserver(配置和管理sonar) searchserver(搜索结果返回给sonarUI) ComplateEngineserver(计算服务 将分析结果入库)。
2.sonarqube db : 数据库 存放配置。
3.sonarqube plugins: 插件增加功能。
4.sonar-scanner : 代码扫描工具 可以有多个。
install
部署PostgreSQL
为啥什么使用pg数据库,而不使用mysql?
PostgreSQL 和 MySQL 都是流行的关系型数据库管理系统,它们各自有不同的优势和适用场景:
- 数据类型和完整性
PostgreSQL 在数据类型和完整性方面比 MySQL 更为严格。如果您需要存储复杂数据类型或需要强制执行数据完整性规则,那么 PostgreSQL 是更好的选择。例如,如果您需要存储 JSON 数据类型或使用外键约束等高级功能,那么 PostgreSQL 是更好的选择。
- 大型应用和高负载
如果您需要处理大量数据和高并发负载,那么 PostgreSQL 是更好的选择。PostgreSQL 在处理大型数据集和高并发负载方面表现得更好。如果您需要处理非常大的数据集、高并发读写或复杂的查询,那么 PostgreSQL 是更好的选择。
- 简单的 Web 应用
如果您的应用程序是一个简单的 Web 应用程序,那么 MySQL 可能是更好的选择。MySQL 是一个更轻量级、更易于使用和安装的数据库管理系统。如果您只需要存储少量数据或需要一个小型数据库作为应用程序的后端,那么 MySQL 是更好的选择。
- 事务处理
如果您需要处理复杂的事务处理,那么 PostgreSQL 是更好的选择。PostgreSQL 支持更高级的事务处理功能,例如 SavePoints(保存点)和 Rollback to SavePoint(回滚到保存点),这些功能可以帮助您更好地管理数据一致性和可靠性。
- 数据库扩展性
如果您需要一个高度可扩展的数据库管理系统,那么 PostgreSQL 是更好的选择。PostgreSQL 提供了更多的扩展性选项,例如分区表、并行查询和流复制功能,这些功能可以帮助您更好地处理大量的数据和高并发负载。
PostgreSQL 和 MySQL对比
数据库复制和高可用性:PostgreSQL 使用流复制来实现高可用性和数据库复制,而 MySQL 使用复制技术来实现。PostgreSQL 的流复制提供更好的性能和更高的可靠性,但需要更多的配置和管理。MySQL 的复制技术更容易使用和管理,但在大型复制和高可用性方面的性能可能不如 PostgreSQL。
全文搜索:PostgreSQL 有一个内置的全文搜索引擎,可以用于搜索文本数据。MySQL 也提供全文搜索功能,但需要使用插件或扩展来实现。
性能:在某些方面,例如并发读取和写入性能,PostgreSQL 可能比 MySQL 更快。但在其他方面,例如写入性能,MySQL 可能比 PostgreSQL 更快。这取决于您的应用程序的需求和负载模式。
存储引擎:MySQL 支持多个不同的存储引擎,例如 InnoDB、MyISAM 等等。每个存储引擎都有不同的优缺点,可以根据应用程序的需求进行选择。相比之下,PostgreSQL 只使用一种存储引擎,但这意味着它可以提供更一致的性能和可靠性。
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres-sonar
namespace: sonarqube
labels:
app: postgres-sonar
spec:
replicas: 1
selector:
matchLabels:
app: postgres-sonar
template:
metadata:
labels:
app: postgres-sonar
spec