Skip to content

Commit 764f9a2

Browse files
committed
feat: update project documentation
1 parent 7889cb5 commit 764f9a2

8 files changed

Lines changed: 290 additions & 32 deletions
116 KB
Loading
43.4 KB
Loading
129 KB
Loading
33.8 KB
Loading
77.8 KB
Loading

README-PT.md

Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
Português | [English](./README.md)
2+
3+
<p align="center"><a href="https://google.github.io/sqlcommenter/" target="_blank" rel="noopener noreferrer"><img src="https://i.imgur.com/pkcyYLU.png" alt="Sqlcommenter Logo"></a></p>
4+
5+
<p align="center">
6+
<a href="https://github.com/reinanhs/sqlcommenter-hyperf/releases"><img src="https://poser.pugx.org/reinanhs/sqlcommenter-hyperf/v/stable" alt="Versão Estável"></a>
7+
<a href="https://www.php.net"><img src="https://img.shields.io/badge/php-%3E=8.1-brightgreen.svg?maxAge=2592000" alt="Versão do Php"></a>
8+
<a href="https://packagist.org/packages/reinanhs/sqlcommenter-hyperf"><img src="https://poser.pugx.org/reinanhs/sqlcommenter-hyperf/downloads" alt="Total de Downloads"></a>
9+
<a href="https://github.com/reinanhs/sqlcommenter-hyperf/blob/main/LICENSE"><img src="https://img.shields.io/github/license/reinanhs/sqlcommenter-hyperf.svg?maxAge=2592000" alt="Licença do Sqlcommenter"></a>
10+
</p>
11+
12+
## Introdução
13+
14+
Sqlcommenter Hyperf é uma biblioteca projetada para adicionar automaticamente comentários às consultas SQL executadas pelo
15+
framework [Hyperf](https://github.com/hyperf/hyperf). Esses comentários usam o formato
16+
[sqlcommenter](https://google.github.io/sqlcommenter/), que é entendido por várias ferramentas e serviços de banco de dados,
17+
proporcionando insights e rastreabilidade aprimorados para as interações de banco de dados da sua aplicação.
18+
19+
## Instalação
20+
21+
Você pode instalar a biblioteca via Composer:
22+
23+
```shell
24+
composer require reinanhs/sqlcommenter-hyperf
25+
```
26+
27+
Adicione a configuração do componente:
28+
29+
```shell
30+
php bin/hyperf.php vendor:publish reinanhs/sqlcommenter-hyperf
31+
```
32+
33+
## Exemplo
34+
35+
Veja um exemplo de uma consulta simples sendo executada:
36+
37+
```sql
38+
select *
39+
from users
40+
```
41+
42+
Usando essa biblioteca, a consulta ficará assim:
43+
44+
```sql
45+
select *
46+
from users /*framework='Hyperf',
47+
application='hyperf-skeleton',
48+
controller='UserController',
49+
action='index',
50+
route='%%2Fapi%%2Ftest',
51+
db_driver='mysql',
52+
traceparent='00-1cd60708968a61e942b5dacc2d4a5473-7534abe7ed36ce35-01'*/
53+
```
54+
55+
Ao examinar a instrução SQL acima e seu comentário em `/*...*/`, podemos correlacionar e identificar os campos na consulta SQL com o nosso código fonte na nossa aplicação web:
56+
57+
> Tabela 1: Informação sobre a descrição de cada tipo de comentário
58+
59+
| CAMPO ORIGINAL | INTERPRETAÇÃO |
60+
|---------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------|
61+
| **framework**='Hyperf' | A palavra "Hyperf" representa o framework que gerou a consulta. |
62+
| **application**='hyperf-skeleton' | O nome do projeto onde o código foi executado. |
63+
| **controller**='UserController' | Nome do controlador em `app/Controller`. |
64+
| **action**='index' | Nome do método chamado pelo controlador. |
65+
| **route**='%%2Fapi%%2Ftest' | A rota usada durante a chamada da consulta. |
66+
| **db_driver**='mysql' | O nome do motor de banco de dados Hyperf. |
67+
| **traceparent**='00-1cd60708968a61e942b5dacc2d4a5473-7534abe7ed36ce35-01' | O campo [W3C TraceContext Traceparent](https://www.w3.org/TR/trace-context/#traceparent-field) do trace OpenTelemetry. |
68+
69+
Várias ferramentas e serviços podem interpretar esses comentários, ajudando a correlacionar o código do usuário com as instruções SQL geradas pelo ORM, e podem ser examinadas nos logs do servidor de banco de dados. Isso fornece uma melhor observabilidade do estado da sua aplicação até o servidor de banco de dados.
70+
71+
Aqui está um exemplo de como essas informações aparecem no [Google Cloud SQL](https://cloud.google.com/sql/docs/postgres/using-query-insights):
72+
73+
![Exemplo de SQLcommenter no GCP](.github/assets/cloud-sql-query-insights-view-1.png)
74+
75+
A imagem acima ilustra como as informações do sqlcommenter são mapeadas dentro do Google Cloud. Nesse contexto, o sqlcommenter está sendo usado para adicionar tags no Query Insights, facilitando a identificação de qual parte do código da aplicação está causando problemas de desempenho.
76+
77+
Ao clicar em uma dessas tags, você poderá visualizar informações detalhadas sobre as consultas. Veja o exemplo abaixo:
78+
79+
![Exemplo de SQLcommenter no GCP](.github/assets/cloud-sql-query-insights-view-2.png)
80+
81+
Além do **Cloud SQL**, várias outras ferramentas também suportam _sqlcommenter_. Um exemplo é o [Planetscale Query Insights](https://planetscale.com/docs/concepts/query-insights).
82+
83+
## Trace
84+
85+
Ao usar a biblioteca sqlcommenter-hyperf, você pode vincular as informações de trace do Cloud SQL Query com seu projeto Hyperf. Ao correlacionar suas informações, você alcançará um nível de rastreabilidade muito mais detalhado do que o fornecido pelo Hyperf por padrão.
86+
87+
Abaixo está uma comparação entre duas imagens mostrando as informações de trace do SQL padrão no Hyperf e do trace do Cloud SQL Query:
88+
89+
A imagem abaixo exemplifica o trace do SQL padrão no Hyperf:
90+
91+
![Trace padrão do SQL no Hyperf](.github/assets/standard-sql-trace-in-hyperf.png)
92+
93+
A imagem abaixo exemplifica o trace do Cloud SQL associado a uma requisição no Hyperf:
94+
95+
![Trace do Cloud SQL no Hyperf](.github/assets/cloud-sql-trace-in-hyperf.png)
96+
97+
Uma dica ao usar a biblioteca sqlcommenter-hyperf é desabilitar o trace SQL padrão no Hyperf, pois você obterá informações mais detalhadas através do trace do Cloud SQL Query na GCP.
98+
99+
## Configuração
100+
101+
Quando você instala a biblioteca em seu projeto, ela será automaticamente habilitada através das configurações padrão. Portanto, para usar esta biblioteca, você só precisa tê-la instalada em seu projeto.
102+
103+
No entanto, se desejar desabilitar alguns comentários, você pode fazer isso através das configurações. Também vale mencionar que você pode desabilitar completamente a execução desta biblioteca em um ambiente específico através das configurações.
104+
105+
Com as configurações abaixo, você pode habilitar ou desabilitar os comentários gerados por esta biblioteca. Por padrão, todos os comentários estão habilitados. Você encontrará essa configuração no arquivo `config/autoload/sqlcommenter.php`:
106+
107+
```php
108+
'enable' => env('SQLCOMMENTER_ENABLE', true),
109+
'include' => [
110+
'framework' => env('SQLCOMMENTER_ENABLE_FRAMEWORK', true),
111+
'controller' => env('SQLCOMMENTER_ENABLE_CONTROLLER', true),
112+
'action' => env('SQLCOMMENTER_ENABLE_ACTION', true),
113+
'route' => env('SQLCOMMENTER_ENABLE_ROUTE', true),
114+
'application' => env('SQLCOMMENTER_ENABLE_APPLICATION', true),
115+
'db_driver' => env('SQLCOMMENTER_ENABLE_DB_DRIVER', true),
116+
],
117+
```
118+
119+
Veja abaixo uma explicação detalhada de cada uma das configurações:
120+
121+
| Configuração | Tipo | Padrão | Descrição |
122+
|-----------------------|---------|--------|--------------------------------------------------------------------------------------------------------------------------------|
123+
| `enable` | Boolean | `true` | Controla se o SQLCommenter está habilitado ou desabilitado. Defina como `true` para habilitar o SQLCommenter e adicionar comentários às consultas SQL. |
124+
| `include.framework` | Boolean | `true` | Inclui o nome do framework usado nos comentários SQL. |
125+
| `include.controller` | Boolean | `true` | Inclui o nome do controlador responsável pela ação que gerou a consulta SQL. |
126+
| `include.action` | Boolean | `true` | Inclui o nome da ação ou método dentro do controlador que gerou a consulta SQL. |
127+
| `include.route` | Boolean | `true` | Inclui a rota associada à requisição que gerou a consulta SQL. |
128+
| `include.application` | Boolean | `true` | Inclui o nome da aplicação nos comentários SQL. |
129+
| `include.db_driver` | Boolean | `true` | Inclui o nome do driver de banco de dados usado para executar a consulta SQL. |
130+
131+
## Funcionalidades
132+
133+
- Adiciona automaticamente comentários compatíveis com sqlcommenter às consultas SQL.
134+
- Proporciona melhor rastreabilidade e insights nas interações com o banco de dados.
135+
- Integração fácil com o framework Hyperf.
136+
- Suporta múltiplos drivers de banco de dados.
137+
138+
## Desempenho
139+
140+
Usar a biblioteca Sqlcommenter Hyperf pode introduzir um pequeno impacto de desempenho devido à adição de comentários às consultas SQL. No entanto, os benefícios em termos de rastreabilidade, facilidade de depuração e integração com ferramentas de monitoramento geralmente superam esse impacto.
141+
142+
Para demonstrar a eficácia da biblioteca Sqlcommenter Hyperf, realizaremos dois testes distintos. A medição será realizada em um ambiente controlado do Google Cloud Run com as seguintes configurações:
143+
144+
- CPU sempre alocada
145+
- Número mínimo de instâncias: 1
146+
- Número máximo de instâncias: 1
147+
- Memória por instância: 1GB
148+
- Número de vCPUs por instância: 1vCPU
149+
- Máximo de requisições concorrentes por instância: 1000
150+
151+
Veja abaixo o projeto que foi usado como experimento:
152+
153+
- [sample-sqlcommenter-hyperf-poc](https://github.com/ReinanHS/sample-sqlcommenter-hyperf-poc)
154+
155+
### Teste de tempo médio de execução do bloco de código:
156+
157+
Neste teste, mediremos o tempo médio de execução do bloco de código SqlCommenterAspect que adiciona comentários SQL. Após coletar 10.000 registros de tempo de execução para esta operação, calculamos o tempo médio de execução, que foi de aproximadamente **0.103 milissegundos (ms)**.
158+
159+
Esse valor indica que a inserção de comentários SQL nas consultas é uma operação extremamente rápida, adicionando um overhead insignificante ao tempo total de execução da consulta.
160+
161+
- [Documentação completa sobre o teste de tempo médio de execução do bloco de código](https://github.com/ReinanHS/sqlcommenter-hyperf/wiki/Performance#average-execution-time-test-of-the-code-block)
162+
163+
### Teste de desempenho de latência de requisição
164+
165+
Neste teste, usaremos K6 para fazer várias requisições e comparar o desempenho com a biblioteca habilitada e desabilitada. Veja os resultados deste experimento abaixo:
166+
167+
![Desempenho com Configuração Habilitada vs Desabilitada](.github/assets/performance-configuration-chart.png)
168+
169+
Ao analisar a imagem acima, podemos ver que inicialmente os tempos de resposta são muito semelhantes para ambas as configurações. No entanto, à medida que o consumo de CPU aumenta e nos aproximamos do limite de 1 vCPU, a configuração desabilitada (False) começa a apresentar um desempenho ligeiramente melhor. Ao examinar os gráficos de utilização da CPU, observamos que em torno de 400 VUs, o uso da CPU era de aproximadamente 98% para ambas as configurações.
170+
171+
Quando a biblioteca não está competindo intensamente pelo uso da CPU, ela consegue manter um desempenho muito bom, próximo ao da configuração desabilitada. Isso sugere que em condições de alta demanda, a configuração desabilitada pode lidar com a carga ligeiramente melhor, resultando em um aumento marginal no número de requisições atendidas por segundo.
172+
173+
Se você deseja verificar as informações detalhadas sobre o teste, é recomendado clicar no link abaixo:
174+
175+
- [Documentação completa sobre o teste de desempenho de latência de requisição](https://github.com/ReinanHS/sqlcommenter-hyperf/wiki/Performance#request-latency-performance-test)
176+
177+
## Changelog
178+
179+
Por favor, veja o [CHANGELOG](CHANGELOG.md) para mais informações sobre o que mudou recentemente.
180+
181+
## Contribuindo
182+
183+
Você quer fazer parte deste projeto? Leia [como contribuir](CONTRIBUTING.md).
184+
185+
## Vulnerabilidades de segurança
186+
187+
Por favor, revise [nossa política de segurança](https://github.com/reinanhs/sqlcommenter-hyperf/security/policy) sobre como reportar vulnerabilidades de segurança.
188+
189+
### Licença
190+
191+
Este projeto está sob licença. Veja o arquivo [LICENSE](LICENSE) para mais detalhes.

0 commit comments

Comments
 (0)