Vazern Posted November 28, 2018 Share Posted November 28, 2018 Olá! Alguém pode me informar, se um arquivo .db fosse consultado de alguns em alguns segundos, em um servidor com mais de 100 jogadores, e que toda vez que ele logasse, fosse consultado o SQLite para carregar os dados, consumiria muito do cliente/servidor? Link to comment
Other Languages Moderators Lord Henry Posted November 28, 2018 Other Languages Moderators Share Posted November 28, 2018 Se for de alguns em alguns segundos, sim, consumiria bastante. 1 Link to comment
[M]ister Posted November 28, 2018 Share Posted November 28, 2018 Para que serviria a consulta a cada x segundos ? Você pode manipular a database apenas no login do player (obter dados) e no loggout/quit (salvar dados). Sendo que in-game, após o login, você salvaria os dados em uma variável/ementdata e manipularia ela... e quando o player sair do servidor você seta esses novos dados na database. 1 Link to comment
Vazern Posted November 29, 2018 Author Share Posted November 29, 2018 On 28/11/2018 at 18:44, MaligNos said: Para que serviria a consulta a cada x segundos ? Você pode manipular a database apenas no login do player (obter dados) e no loggout/quit (salvar dados). Sendo que in-game, após o login, você salvaria os dados em uma variável/ementdata e manipularia ela... e quando o player sair do servidor você seta esses novos dados na database. Sim, mas em um servidor com média de 100 players, que por exemplo a cada 2/3 minutos um jogador saísse, ou efetue login, acabaria consumindo? On 28/11/2018 at 17:47, Lord Henry said: Se for de alguns em alguns segundos, sim, consumiria bastante. Usando um servidor MySQL tornaria o processo mais leve, ou daria no mesmo? Link to comment
DNL291 Posted November 30, 2018 Share Posted November 30, 2018 A consulta individual acredito que não afeta nada no servidor; Se tratando do salvamento automático em um intervalo de tempo (que os servidores com banco de dados costumam utilizar) - este irá causar um freeze temporário no servidor, que no caso já é esperado. Nunca cheguei a ter um servidor com um fluxo grande de jogadores, então não sei te dizer o impacto gerado, acho que quem tem ou já teve um servidor com muitos jogadores e lida com esse grande fluxo de jogadores sabe responder melhor isso. Tudo vai depender da qualidade do servidor é claro, mas também cabe ao desenvolvedor saber otimizar seus sistemas. Complementando o que o @MaligNos disse, o jogador loga, você carrega as informações, passam elas pra uma tabela para manipulá-las diretamente do código, e atualiza o seu banco de dados e limpa a tabela quando o jogador sai da conta/servidor. A propósito, tabelas é o forte da linguagem Lua e nesse caso é uma ótima opção. Link to comment
Other Languages Moderators Lord Henry Posted November 30, 2018 Other Languages Moderators Share Posted November 30, 2018 (edited) Bom, sou sub-dono e desenvolvedor de um servidor que já bateu 200 players e posso afirmar que se for dar save em todo mundo, vai dar um freeze bem considerável no servidor. É por isso que a maioria dos sistemas de save account funcionam somente ao logar na conta (recebe os dados do banco de dados) e ao sair do servidor/deslogar/perder conexão/quitar do MTA (salvar os dados no banco de dados). No caso, quando é feito assim, não causa lag pois não são feitos tantos acessos simultâneos ao banco de dados. O que causa o lag é justamente a quantidade de acessos que são feitos ao mesmo tempo, pois a quantidade de dados pendentes na sincronização é muito maior do que quando é feito um por um em momentos diferentes. Imagine que o acesso ao banco de dados é um cara levando uma caixa. Você acha que é mais fácil ele fazer 1 única viagem com várias caixas ao mesmo tempo? Ou é mais fácil ele fazer cada viagem com 1 caixa? 5 hours ago, VazErn said: Sim, mas em um servidor com média de 100 players, que por exemplo a cada 2/3 minutos um jogador saísse, ou efetue login, acabaria consumindo? Se for 1 jogador, o consumo seria insignificante. Pouca quantidade de dados a ser processada ao mesmo tempo. 5 hours ago, VazErn said: Usando um servidor MySQL tornaria o processo mais leve, ou daria no mesmo? Daria no mesmo. Edited November 30, 2018 by Lord Henry 1 Link to comment
Vazern Posted November 30, 2018 Author Share Posted November 30, 2018 12 hours ago, Lord Henry said: Bom, sou sub-dono e desenvolvedor de um servidor que já bateu 200 players e posso afirmar que se for dar save em todo mundo, vai dar um freeze bem considerável no servidor. É por isso que a maioria dos sistemas de save account funcionam somente ao logar na conta (recebe os dados do banco de dados) e ao sair do servidor/deslogar/perder conexão/quitar do MTA (salvar os dados no banco de dados). No caso, quando é feito assim, não causa lag pois não são feitos tantos acessos simultâneos ao banco de dados. O que causa o lag é justamente a quantidade de acessos que são feitos ao mesmo tempo, pois a quantidade de dados pendentes na sincronização é muito maior do que quando é feito um por um em momentos diferentes. Imagine que o acesso ao banco de dados é um cara levando uma caixa. Você acha que é mais fácil ele fazer 1 única viagem com várias caixas ao mesmo tempo? Ou é mais fácil ele fazer cada viagem com 1 caixa? Se for 1 jogador, o consumo seria insignificante. Pouca quantidade de dados a ser processada ao mesmo tempo. Daria no mesmo. Entendi perfeitamente. Obrigado! No caso, a utilidade do MySQL, seria somente uma maneira mais segura de manter os dados salvos, não é? Link to comment
Other Languages Moderators Lord Henry Posted November 30, 2018 Other Languages Moderators Share Posted November 30, 2018 Não sei se é mais seguro. Mas precisa de mais comandos para fazer a troca de dados. No MySQL vc precisa de um comando para iniciar a conexão com o banco de dados, e depois um comando para fazer as alterações. Já no SQLite você só envia e recebe os dados direto, sem necessidade de solicitar conexão. 1 Link to comment
Vazern Posted December 1, 2018 Author Share Posted December 1, 2018 8 hours ago, Lord Henry said: Não sei se é mais seguro. Mas precisa de mais comandos para fazer a troca de dados. No MySQL vc precisa de um comando para iniciar a conexão com o banco de dados, e depois um comando para fazer as alterações. Já no SQLite você só envia e recebe os dados direto, sem necessidade de solicitar conexão. Não entendi isto, porque pelo o que eu li no dbConnect, a única diferença é que o MySQL tem alguns argumentos a mais (dbname, host, porta, usuário, senha), nos outros aspectos, utiliza as mesmas funções que usamos para SQLite (dbQuery, dbExec, dbPoll e etc) Link to comment
DNL291 Posted December 1, 2018 Share Posted December 1, 2018 (edited) A diferença de banco de dados local (o que talvez seja o que você tá usando) e banco de dados hospedado é que o hospedado vai ter o uso contínuo de largura de banda, essa eu acredito que seja a diferença mais relevante. Edited December 1, 2018 by DNL291 1 Link to comment
[M]ister Posted December 1, 2018 Share Posted December 1, 2018 O MTA só possui o SQLite como database integrada. Para utilização do MySQL deve-se instalar o respectivo servidor em sua máquina ou então efetuar a conexão de maneira remota, por isto a necessidade dos parâmetros: ip, porta, login e senha. Ou seja, fica muito mais viável a utilização do próprio SQLite do MTA, pois caso use um MySQL remoto o delay nas transferências de dados aumentará significativamente. E não tem qualquer relação com ele ser mais seguro ou não, até porque a database integrada do MTA é acessível só localmente. Já em servidores MySQL pode-se ocorrer de ficar acessível para qualquer um (o que o torna mais vulnerável). Um diferencial que pode ser significativo, é que o MySQL possui uma gama maior de instruções/utilizações. 1 Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now