SA-MP Forums

SA-MP Forums (https://forum.sa-mp.com/index.php)
-   Português/Portuguese (https://forum.sa-mp.com/forumdisplay.php?f=34)
-   -   [Off] Dados flutuantes - Integração total com banco de dados (https://forum.sa-mp.com/showthread.php?t=388962)

steki. 31/10/2012 11:17 AM

Dados flutuantes - Integração total com banco de dados
 
Bem, depois de alguma revisão sobre o que eu escrevo nos meus scripts, cheguei à conclusão que este ponto é razoavelmente discutível. Mas do que eu estou falando?
Pra quem confia mesmo em MySQL e sabe que ele dá conta do recado, já pensou, com hesitação, em escrever um sistema que não salve quase nada em variáveis locais.
O truque é bem simples, a integração é bem leve e você pode aproveitar a dinamicidade do MySQL com joins, prepared statements, subqueries, etc.

Eu, por mim, já escrevi alguns sistemas flutuantes, como o sistema de itens, onde as informações sobre os itens e os itens dos players são processados em tempo real, sem muita queda de performance, aumentando a 'flexibilidade' do script e tornando-o mais genérico.
Isto já existem em muitos jogos MMO e nunca houveram reclamações sobre isso, mas eu queria ouvir a opinião da galera que tem uma ligeira manjada de SQL. Também queria convidar as pessoas para fazerem isso. É bem divertido xD.

:P

Joao Pedro 31/10/2012 01:25 PM

Re: Dados flutuantes - Integração total com banco de dados
 
Eu não acho uma boa, por que o servidor de gta oscila sua velocidade de conexão e mesmo se tratando de pedidos localhost, os mesmos podem chegar a demorar segundos. Sem contar que você pegando vários dados simultaneamente, pois vários jogadores poderão estar pegando esses dados ao usarem seus sistemas, poderia causar um lag no servidor MYSQL, pois todos nós sabemos que essas pseudo-empresas não estão nada preparadas para grandes armazenamentos de dados.

Para melhor uso do MYSQL, aconselho colocar apenas os dados, digamos mais importantes e os que você necessita estar mudando constantemente, assim ficará mais dinâmicos. Exemplos de dados:
- Contas
- Organizações
- Empregos

Não é que o MYSQL não dê conta do recado, os fatores são como citei a cima: as pseudo-empresas não tem estrutura para grande envio e recebimento de dados em seus servidores MYSQL e você pegar um dado de uma variável que já está alocada na memória tem uma respostas exageradamente menor do que se você pegar em MYSQL.

ipsBruno 31/10/2012 01:38 PM

Respuesta: Dados flutuantes - Integração total com banco de dados
 
Quote:

Originally Posted by Joao Pedro (Post 2197687)
Eu não acho uma boa, por que o servidor de gta oscila sua velocidade de conexão e mesmo se tratando de pedidos localhost, os mesmos podem chegar a demorar segundos. Sem contar que você pegando vários dados simultaneamente, pois vários jogadores poderão estar pegando esses dados ao usarem seus sistemas, poderia causar um lag no servidor MYSQL, pois todos nós sabemos que essas pseudo-empresas não estão nada preparadas para grandes armazenamentos de dados.

Para melhor uso do MYSQL, aconselho colocar apenas os dados, digamos mais importantes e os que você necessita estar mudando constantemente, assim ficará mais dinâmicos. Exemplos de dados:
- Contas
- Organizações
- Empregos

Não é que o MYSQL não dê conta do recado, os fatores são como citei a cima: as pseudo-empresas não tem estrutura para grande envio e recebimento de dados em seus servidores MYSQL e você pegar um dado de uma variável que já está alocada na memória tem uma respostas exageradamente menor do que se você pegar em MYSQL.

Certamente isto é verdade. Mas buscando um bom host ou até um VPS potente e particular pode-se fazer isto, dizer que não é aconselhado devido a estrutura de algumas empresas da SA:MP é generalizar demais, há tantas alternativas.

Joao Pedro 31/10/2012 01:55 PM

Re: Dados flutuantes - Integração total com banco de dados
 
Ainda com uma boa estrutura eu não acho uma boa. Por que pense, para você pegar os dados de um SELECT, você terá que usar o mysql_function_query e ainda criar uma callback para aonde esses dados serão enviados. Então em questão de linhas, seria muito maior...

[JD]BlackFire 31/10/2012 03:58 PM

Re: Dados flutuantes - Integração total com banco de dados
 
eu, como administrador de servidores sa-mp e mysql, acredito que para sa-mp não é a melhor alternativa, até mesmo pelos plugins terem um delay e funcionalidades reduzidas, já o servidor mysql a performance dele vai depender dos recursos da máquina.

A melhor alternativa em minha opinião é SQLite, que o próprio server sa-mp dá suporte.

paulor 31/10/2012 04:20 PM

Re: Dados flutuantes - Integração total com banco de dados
 
É uma ótima ideia, mais basta saber-mos se é a melhor opção..

rjjj 31/10/2012 09:50 PM

Re: Dados flutuantes - Integração total com banco de dados
 
Pelo que entendi, seu objetivo é usar variáveis que não são removidas da memória até o fechamento do samp-server como buffers para resultados de queries ao banco de dados :mrgreen:.



Pawn é single-threaded. Uma instrução da máquina abstrata é completamente processada para que a leitura da próxima comece.



Apesar de manipular várias threads, o plugin MySQL do BlueG tem que interagir com a máquina abstrata com uma thread só :p.



Algumas das instruções que citei servem para executar funções nativas. Somente quando estas são totalmente lidas é que passa a ser a vez da instrução seguinte.



Isso significa que a parte de Pawn é uma sequência, evitando, por exemplo, que duas callbacks passem por execução ao mesmo tempo :mrgreen:.



Sendo assim, tudo ocorrerá bem se as variáveis em questão forem sempre resetadas no início da callback de obtenção de dados.



Espero ter ajudado :p.

steki. 31/10/2012 11:47 PM

Re: Dados flutuantes - Integração total com banco de dados
 
Quote:

Originally Posted by Joao Pedro (Post 2197733)
Ainda com uma boa estrutura eu não acho uma boa. Por que pense, para você pegar os dados de um SELECT, você terá que usar o mysql_function_query e ainda criar uma callback para aonde esses dados serão enviados. Então em questão de linhas, seria muito maior...

Não estou me referindo a linhas.

Quote:

Originally Posted by [JD]BlackFire (Post 2198010)
eu, como administrador de servidores sa-mp e mysql, acredito que para sa-mp não é a melhor alternativa, até mesmo pelos plugins terem um delay e funcionalidades reduzidas, já o servidor mysql a performance dele vai depender dos recursos da máquina.

A melhor alternativa em minha opinião é SQLite, que o próprio server sa-mp dá suporte.

O único delay significativo seria a espera "hang", se uma query está na fila para ser chamada pelo abstrador.

Quote:

Originally Posted by rjjj (Post 2198573)
Pelo que entendi, seu objetivo é usar variáveis que não são removidas da memória até o fechamento do samp-server como buffers para resultados de queries ao banco de dados :mrgreen:.



Pawn é single-threaded. Uma instrução da máquina abstrata é completamente processada para que a leitura da próxima comece.



Apesar de manipular várias threads, o plugin MySQL do BlueG tem que interagir com a máquina abstrata com uma thread só :p.



Algumas das instruções que citei servem para executar funções nativas. Somente quando estas são totalmente lidas é que passa a ser a vez da instrução seguinte.



Isso significa que a parte de Pawn é uma sequência, evitando, por exemplo, que duas callbacks passem por execução ao mesmo tempo :mrgreen:.



Sendo assim, tudo ocorrerá bem se as variáveis em questão forem sempre resetadas no início da callback de obtenção de dados.



Espero ter ajudado :p.

Não é bem esse o ponto, mas é um fator bem discutível.

ipsBruno 01/11/2012 01:31 AM

Respuesta: Re: Dados flutuantes - Integração total com banco de dados
 
Quote:

Originally Posted by rjjj (Post 2198573)
Pelo que entendi, seu objetivo é usar variáveis que não são removidas da memória até o fechamento do samp-server como buffers para resultados de queries ao banco de dados :mrgreen:.



Pawn é single-threaded. Uma instrução da máquina abstrata é completamente processada para que a leitura da próxima comece.



Apesar de manipular várias threads, o plugin MySQL do BlueG tem que interagir com a máquina abstrata com uma thread só :p.



Algumas das instruções que citei servem para executar funções nativas. Somente quando estas são totalmente lidas é que passa a ser a vez da instrução seguinte.



Isso significa que a parte de Pawn é uma sequência, evitando, por exemplo, que duas callbacks passem por execução ao mesmo tempo :mrgreen:.



Sendo assim, tudo ocorrerá bem se as variáveis em questão forem sempre resetadas no início da callback de obtenção de dados.



Espero ter ajudado :p.

Não é o ponto. Mas mesmo assim, dá para facilmente fazer um plugin e basea-lo todo em uma thread diferente;


All times are GMT. The time now is 08:52 PM.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.