[pgbr-geral] Conexão permanente
Pessal estou com o seguinte dilema: Tenho alguns cliente que me pedem para que cada usuário se conecte ao sistema em uma máquina por vez. Para resolver o problema, criei os usuários da minha app como usuários do PG pois desta forma quando um usuário tentar efetuar o login na app, ela pergunta ao PG se o usuário já está logado, se não estiver logado a entrada no sistema continua (a conexão fica aberta até a app ser finalizada) caso contrário e entrada é barrada e ele é avisado que seu login está aberto em outra máquina. mas recentemente venho estudando o C# e tenho notado que ninguem utiliza uma conexão permanente ao banco de dados. todos tem seus ótimos argumentos. Gostaria de saber a opinião de vocês: Pensando no controle que preciso, é arriscado manter uma conexão permanente com o banco ? Se este procedimento for ruim e o melhor for o que o mundo c# diz: Conecte, pegue o que quer e desconecte. Como fariamos para manter o controle em que o usuário só possa ficar conectado em uma máquina. Não sei se fui claro mas ficaria muujuuuito grato em ler o parecer de vocês Obrigado. -- *Marco Antonio J. Victor* Fone/Fax: *11 2977-5406* www.tactor.com.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Conexão permanente
2009/1/12 marco ma...@tactor.com.br: Pessal estou com o seguinte dilema: Tenho alguns cliente que me pedem para que cada usuário se conecte ao sistema em uma máquina por vez. Para resolver o problema, criei os usuários da minha app como usuários do PG pois desta forma quando um usuário tentar efetuar o login na app, ela pergunta ao PG se o usuário já está logado, se não estiver logado a entrada no sistema continua (a conexão fica aberta até a app ser finalizada) caso contrário e entrada é barrada e ele é avisado que seu login está aberto em outra máquina. mas recentemente venho estudando o C# e tenho notado que ninguem utiliza uma conexão permanente ao banco de dados. todos tem seus ótimos argumentos. Bem vindo ao ADO.NET! Gostaria de saber a opinião de vocês: Pensando no controle que preciso, é arriscado manter uma conexão permanente com o banco ? Eu não diria que é arriscado, mas sim custoso. Cada conexão ativa consome memória no servidor. Muitas conexões/desconexões simultaneas também são custosas para o servidor. Tudo depende. Talvez manter as conexões abertas com o pg_pool (falei bobagem?), por exemplo, pode solucionar o problema. Se este procedimento for ruim e o melhor for o que o mundo c# diz: Conecte, pegue o que quer e desconecte. Como fariamos para manter o controle em que o usuário só possa ficar conectado em uma máquina. Sim, esse é o principio do ADO.NET. -- Atenciosamente, Sebastian Selau Webber Colombo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Conexão permanente
Acredito que voc resolver pela aplicao. Assim que um usurio abrir a aplicao, insira o nome dele e tempo de conexo em uma tabela. No momento de pedir o close da aplicao, apague o nome do usurio na tabela. Entre os dois eventos, teste se o usurio j est conectado. (Quando ele tentar logar denovo em outra mquina) O registro vai ser encontrado e voc bloqueia o login com este user (volta para a tela de login). Caso no exista um registro nesta tabela, ele loga. No sei se consegui explicar o que quero dizer. Mas veja a, e tenho certeza que otras pessoas podem te dar mais uma "luz", no sou nem de perto expert no assunto. Abrao George marco escreveu: Pessal estou com o seguinte dilema: Tenho alguns cliente que me pedem para que cada usurio se conecte ao sistema em uma mquina por vez. Para resolver o problema, criei os usurios da minha app como usurios do PG pois desta forma quando um usurio tentar efetuar o login na app, ela pergunta ao PG se o usurio j est logado, se no estiver logado a entrada no sistema continua (a conexo fica aberta at a app ser finalizada) caso contrrio e entrada barrada e ele avisado que seu login est aberto em outra mquina. mas recentemente venho estudando o C# e tenho notado que ninguem utiliza uma conexo permanente ao banco de dados. todos tem seus timos argumentos. Gostaria de saber a opinio de vocs: Pensando no controle que preciso, arriscado manter uma conexo permanente com o banco ? Se este procedimento for ruim e o melhor for o que o mundo c# diz: Conecte, pegue o que quer e desconecte. Como fariamos para manter o controle em que o usurio s possa ficar conectado em uma mquina. No sei se fui claro mas ficaria muujuuuito grato em ler o parecer de vocs Obrigado. -- Marco Antonio J. Victor Fone/Fax: 11 2977-5406 www.tactor.com.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Conexão permanente
Eu resolveria(sugeriria) esse seu problema, se voce desejasse resolver do lado do banco, com uma tabela de logados, em que quando uma pessoa loga cria um registro com o timestamp e ip da maquina... em cada operacao ou em um gatilho na propria aplicação rodando em determinado período, voce atualiza esse timestamp de acesso. assim que alguem tenta logar voce pergunta para essa tabela se aquele login ja esta em uso e se o periodo do lastaccess esta valido, se estiver tudo certo, nega o login, senao, bloqueia o login com aviso de usuario ja logado. o timestamp e sua atualizacao periodica serve para o caso de travamentos do desktop em que o usuario nao teve como sair da aplicacao e a chave ficaria esquecida la, invalidando o usuario ate uma limpeza manual. no exit da aplicacao dispare um evento que delete registro na tabela de logados... acho essa uma solucao elegante... mas com certeza vão haver muitas outras solucoes. 2009/1/12 marco ma...@tactor.com.br Pessal estou com o seguinte dilema: Tenho alguns cliente que me pedem para que cada usuário se conecte ao sistema em uma máquina por vez. Para resolver o problema, criei os usuários da minha app como usuários do PG pois desta forma quando um usuário tentar efetuar o login na app, ela pergunta ao PG se o usuário já está logado, se não estiver logado a entrada no sistema continua (a conexão fica aberta até a app ser finalizada) caso contrário e entrada é barrada e ele é avisado que seu login está aberto em outra máquina. mas recentemente venho estudando o C# e tenho notado que ninguem utiliza uma conexão permanente ao banco de dados. todos tem seus ótimos argumentos. Gostaria de saber a opinião de vocês: Pensando no controle que preciso, é arriscado manter uma conexão permanente com o banco ? Se este procedimento for ruim e o melhor for o que o mundo c# diz: Conecte, pegue o que quer e desconecte. Como fariamos para manter o controle em que o usuário só possa ficar conectado em uma máquina. Não sei se fui claro mas ficaria muujuuuito grato em ler o parecer de vocês Obrigado. -- *Marco Antonio J. Victor* Fone/Fax: *11 2977-5406* www.tactor.com.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Ivo Nascimento - Iann - | twitter: ivonascimento . | | http://ianntech.com.br. | | ZCE ID 227463685| - ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Conexão permanente
George, obrigado pela resposta mas já pensei nesta dia lógica, mas o problema seria o seguinte: Por algum motivo o usuário é desconectado: A máquina pode travar. O usuário pode desligar a máquina no botão A conexão com o servidor pode cair ( internet ) Ou seja, a aplicação terminar de forma anormal Nestes casos, a tebela continuaria como se ele estivesse conectado e obviamente seria interpetado como login em uso. Se houver uma desconexão anormal o PG controla isso pra mim muito bem ! Grato. George Silva escreveu: Acredito que você resolver pela aplicação. Assim que um usuário abrir a aplicação, insira o nome dele e tempo de conexão em uma tabela. No momento de pedir o close da aplicação, apague o nome do usuário na tabela. Entre os dois eventos, teste se o usuário já está conectado. (Quando ele tentar logar denovo em outra máquina) O registro vai ser encontrado e você bloqueia o login com este user (volta para a tela de login). Caso não exista um registro nesta tabela, ele loga. Não sei se consegui explicar o que quero dizer. Mas veja aí, e tenho certeza que otras pessoas podem te dar mais uma luz, não sou nem de perto expert no assunto. Abraço George marco escreveu: Pessal estou com o seguinte dilema: Tenho alguns cliente que me pedem para que cada usuário se conecte ao sistema em uma máquina por vez. Para resolver o problema, criei os usuários da minha app como usuários do PG pois desta forma quando um usuário tentar efetuar o login na app, ela pergunta ao PG se o usuário já está logado, se não estiver logado a entrada no sistema continua (a conexão fica aberta até a app ser finalizada) caso contrário e entrada é barrada e ele é avisado que seu login está aberto em outra máquina. mas recentemente venho estudando o C# e tenho notado que ninguem utiliza uma conexão permanente ao banco de dados. todos tem seus ótimos argumentos. Gostaria de saber a opinião de vocês: Pensando no controle que preciso, é arriscado manter uma conexão permanente com o banco ? Se este procedimento for ruim e o melhor for o que o mundo c# diz: Conecte, pegue o que quer e desconecte. Como fariamos para manter o controle em que o usuário só possa ficar conectado em uma máquina. Não sei se fui claro mas ficaria muujuuuito grato em ler o parecer de vocês Obrigado. -- *Marco Antonio J. Victor* Fone/Fax: *11 2977-5406* www.tactor.com.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Nenhum vírus encontrado nessa mensagem recebida. Verificado por AVG - http://www.avgbrasil.com.br Versão: 8.0.197 / Banco de dados de vírus: 270.10.6/1888 - Data de Lançamento: 12/1/2009 07:04 -- *Marco Antonio J. Victor* Fone/Fax: *11 2977-5406* www.tactor.com.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Conexão permanente
2009/1/12 George Silva georger.si...@gmail.com: Acredito que você resolver pela aplicação. Assim que um usuário abrir a aplicação, insira o nome dele e tempo de conexão em uma tabela. No momento de pedir o close da aplicação, apague o nome do usuário na tabela. já tem pronto! testa ai: select * from pg_stat_activity ; -- Atenciosamente, Sebastian Selau Webber Colombo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Conexão permanente
na minha opniao o ideal seria que cada aplicacao tivesse um usuario no banco e nao que cada usuario do sistema tivesse um usuario no banco. entao, pg_stat_activity te ajudaria a acompanhar os problemas de aplicacao mas nao localizaria o usuario logado. mas essa eh minha humilde opniao... sem querer causar discussoes. 2009/1/12 Sebastian SWC sebastian...@gmail.com 2009/1/12 George Silva georger.si...@gmail.com: Acredito que você resolver pela aplicação. Assim que um usuário abrir a aplicação, insira o nome dele e tempo de conexão em uma tabela. No momento de pedir o close da aplicação, apague o nome do usuário na tabela. já tem pronto! testa ai: select * from pg_stat_activity ; -- Atenciosamente, Sebastian Selau Webber Colombo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Ivo Nascimento - Iann - | twitter: ivonascimento . | | http://ianntech.com.br. | | ZCE ID 227463685| - ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Conexão permanente
Ivo, pelo que entendi você sugeriu algo como: Crio uma tabela para registrar quem está logado e a app atualisa o time stamp a cada 5 minutos ( por exemplo ). No caso se um novo login e o registro existir na tabela mas o tempo for maior que 5 minutos, isso indica que a conexão terminou de forma anormal. então loga normalmente. Caso sontrário o usuário está logado. Mesmo que o usuário tenha se desconectado de forma anormal, teria que aguardar completar o tempo (5 minutos) para logaar novamente. É isso ? Você usa este tidpo de controle ? Grato. ivo nascimento escreveu: Eu resolveria(sugeriria) esse seu problema, se voce desejasse resolver do lado do banco, com uma tabela de logados, em que quando uma pessoa loga cria um registro com o timestamp e ip da maquina... em cada operacao ou em um gatilho na propria aplicação rodando em determinado período, voce atualiza esse timestamp de acesso. assim que alguem tenta logar voce pergunta para essa tabela se aquele login ja esta em uso e se o periodo do lastaccess esta valido, se estiver tudo certo, nega o login, senao, bloqueia o login com aviso de usuario ja logado. o timestamp e sua atualizacao periodica serve para o caso de travamentos do desktop em que o usuario nao teve como sair da aplicacao e a chave ficaria esquecida la, invalidando o usuario ate uma limpeza manual. no exit da aplicacao dispare um evento que delete registro na tabela de logados... acho essa uma solucao elegante... mas com certeza vão haver muitas outras solucoes. 2009/1/12 marco ma...@tactor.com.br mailto:ma...@tactor.com.br Pessal estou com o seguinte dilema: Tenho alguns cliente que me pedem para que cada usuário se conecte ao sistema em uma máquina por vez. Para resolver o problema, criei os usuários da minha app como usuários do PG pois desta forma quando um usuário tentar efetuar o login na app, ela pergunta ao PG se o usuário já está logado, se não estiver logado a entrada no sistema continua (a conexão fica aberta até a app ser finalizada) caso contrário e entrada é barrada e ele é avisado que seu login está aberto em outra máquina. mas recentemente venho estudando o C# e tenho notado que ninguem utiliza uma conexão permanente ao banco de dados. todos tem seus ótimos argumentos. Gostaria de saber a opinião de vocês: Pensando no controle que preciso, é arriscado manter uma conexão permanente com o banco ? Se este procedimento for ruim e o melhor for o que o mundo c# diz: Conecte, pegue o que quer e desconecte. Como fariamos para manter o controle em que o usuário só possa ficar conectado em uma máquina. Não sei se fui claro mas ficaria muujuuuito grato em ler o parecer de vocês Obrigado. -- *Marco Antonio J. Victor* Fone/Fax: *11 2977-5406* www.tactor.com.br http://www.tactor.com.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Ivo Nascimento - Iann - | twitter: ivonascimento . | | http://ianntech.com.br. | | ZCE ID 227463685| - ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Nenhum vírus encontrado nessa mensagem recebida. Verificado por AVG - http://www.avgbrasil.com.br Versão: 8.0.197 / Banco de dados de vírus: 270.10.6/1888 - Data de Lançamento: 12/1/2009 07:04 -- *Marco Antonio J. Victor* Fone/Fax: *11 2977-5406* www.tactor.com.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Conexão permanente
oi, ja usei esse tipo de controle em aplicacoes php e Borland Delphi e obtive sucesso, caso voce fique preocupado que o cliente tente em menos de 5 minutos, basta reduzir o tempo de validacao do timestamp. a operacao de validar o registro do login na tabela de logado eh muito simples e nao vai pesar nem no cliente nem no banco. 2009/1/12 marco ma...@tactor.com.br Ivo, pelo que entendi você sugeriu algo como: Crio uma tabela para registrar quem está logado e a app atualisa o time stamp a cada 5 minutos ( por exemplo ). No caso se um novo login e o registro existir na tabela mas o tempo for maior que 5 minutos, isso indica que a conexão terminou de forma anormal. então loga normalmente. Caso sontrário o usuário está logado. Mesmo que o usuário tenha se desconectado de forma anormal, teria que aguardar completar o tempo (5 minutos) para logaar novamente. É isso ? Você usa este tidpo de controle ? Grato. ivo nascimento escreveu: Eu resolveria(sugeriria) esse seu problema, se voce desejasse resolver do lado do banco, com uma tabela de logados, em que quando uma pessoa loga cria um registro com o timestamp e ip da maquina... em cada operacao ou em um gatilho na propria aplicação rodando em determinado período, voce atualiza esse timestamp de acesso. assim que alguem tenta logar voce pergunta para essa tabela se aquele login ja esta em uso e se o periodo do lastaccess esta valido, se estiver tudo certo, nega o login, senao, bloqueia o login com aviso de usuario ja logado. o timestamp e sua atualizacao periodica serve para o caso de travamentos do desktop em que o usuario nao teve como sair da aplicacao e a chave ficaria esquecida la, invalidando o usuario ate uma limpeza manual. no exit da aplicacao dispare um evento que delete registro na tabela de logados... acho essa uma solucao elegante... mas com certeza vão haver muitas outras solucoes. 2009/1/12 marco ma...@tactor.com.br Pessal estou com o seguinte dilema: Tenho alguns cliente que me pedem para que cada usuário se conecte ao sistema em uma máquina por vez. Para resolver o problema, criei os usuários da minha app como usuários do PG pois desta forma quando um usuário tentar efetuar o login na app, ela pergunta ao PG se o usuário já está logado, se não estiver logado a entrada no sistema continua (a conexão fica aberta até a app ser finalizada) caso contrário e entrada é barrada e ele é avisado que seu login está aberto em outra máquina. mas recentemente venho estudando o C# e tenho notado que ninguem utiliza uma conexão permanente ao banco de dados. todos tem seus ótimos argumentos. Gostaria de saber a opinião de vocês: Pensando no controle que preciso, é arriscado manter uma conexão permanente com o banco ? Se este procedimento for ruim e o melhor for o que o mundo c# diz: Conecte, pegue o que quer e desconecte. Como fariamos para manter o controle em que o usuário só possa ficar conectado em uma máquina. Não sei se fui claro mas ficaria muujuuuito grato em ler o parecer de vocês Obrigado. -- *Marco Antonio J. Victor* Fone/Fax: *11 2977-5406* www.tactor.com.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Ivo Nascimento - Iann - | twitter: ivonascimento . | | http://ianntech.com.br. | | ZCE ID 227463685| - -- ___ pgbr-geral mailing listpgbr-ge...@listas.postgresql.org.brhttps://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Nenhum vírus encontrado nessa mensagem recebida. Verificado por AVG - http://www.avgbrasil.com.br Versão: 8.0.197 / Banco de dados de vírus: 270.10.6/1888 - Data de Lançamento: 12/1/2009 07:04 -- *Marco Antonio J. Victor* Fone/Fax: *11 2977-5406* www.tactor.com.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Ivo Nascimento - Iann - | twitter: ivonascimento . | | http://ianntech.com.br. | | ZCE ID 227463685| - ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Conexão permanente
Sebastian, é exatamente desta forma que faço para saber se um usuário está logado. Sebastian SWC escreveu: 2009/1/12 George Silva georger.si...@gmail.com: Acredito que você resolver pela aplicação. Assim que um usuário abrir a aplicação, insira o nome dele e tempo de conexão em uma tabela. No momento de pedir o close da aplicação, apague o nome do usuário na tabela. já tem pronto! testa ai: select * from pg_stat_activity ; Nenhum vírus encontrado nessa mensagem recebida. Verificado por AVG - http://www.avgbrasil.com.br Versão: 8.0.197 / Banco de dados de vírus: 270.10.6/1888 - Data de Lançamento: 12/1/2009 07:04 -- *Marco Antonio J. Victor* Fone/Fax: *11 2977-5406* www.tactor.com.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Conexão permanente
marco escreveu: Ivo, pelo que entendi você sugeriu algo como: Crio uma tabela para registrar quem está logado e a app atualisa o time stamp a cada 5 minutos ( por exemplo ). No caso se um novo login e o registro existir na tabela mas o tempo for maior que 5 minutos, isso indica que a conexão terminou de forma anormal. então loga normalmente. Caso sontrário o usuário está logado. Mesmo que o usuário tenha se desconectado de forma anormal, teria que aguardar completar o tempo (5 minutos) para logaar novamente. Apenas fazendo um adendo, a palestra do Telles cita alguns aspectos relacionado a este assunto: PostgreSQL o Elefante Encouraçado em http://www.postgresql.org.br/Palestras_do_PGCon_Brasil_2008?action=AttachFiledo=gettarget=elefante_encoura%C3%A7ado.pdfhttp://www.postgresql.org.br/Palestras_do_PGCon_Brasil_2008 Lá, a partir do slide 23, você pode encontrar algumas informações úteis. -- Dickson S. Guedes Administrador de Banco de Dados Confesol - Projeto Colmeia Florianopolis, SC, Brasil (48) 3322-1185, ramal: 26 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Conexão permanente
Pessoal, fico grato pelas respostas, concluí o seguinte: Ou continuo com a minha solução de permaneço com a conexão permanente no banco e para cada usuário na App terá um usuário correspondente no PG. Pois assim posso controlar quem está locado pelo PG ( select * from pg_stat_activity) Ou crio um único usuário da app no PG e controlo os acessos por uma tabela conforme sogetões recebidas. Grato. ivo nascimento escreveu: oi, ja usei esse tipo de controle em aplicacoes php e Borland Delphi e obtive sucesso, caso voce fique preocupado que o cliente tente em menos de 5 minutos, basta reduzir o tempo de validacao do timestamp. a operacao de validar o registro do login na tabela de logado eh muito simples e nao vai pesar nem no cliente nem no banco. 2009/1/12 marco ma...@tactor.com.br mailto:ma...@tactor.com.br Ivo, pelo que entendi você sugeriu algo como: Crio uma tabela para registrar quem está logado e a app atualisa o time stamp a cada 5 minutos ( por exemplo ). No caso se um novo login e o registro existir na tabela mas o tempo for maior que 5 minutos, isso indica que a conexão terminou de forma anormal. então loga normalmente. Caso sontrário o usuário está logado. Mesmo que o usuário tenha se desconectado de forma anormal, teria que aguardar completar o tempo (5 minutos) para logaar novamente. É isso ? Você usa este tidpo de controle ? Grato. ivo nascimento escreveu: Eu resolveria(sugeriria) esse seu problema, se voce desejasse resolver do lado do banco, com uma tabela de logados, em que quando uma pessoa loga cria um registro com o timestamp e ip da maquina... em cada operacao ou em um gatilho na propria aplicação rodando em determinado período, voce atualiza esse timestamp de acesso. assim que alguem tenta logar voce pergunta para essa tabela se aquele login ja esta em uso e se o periodo do lastaccess esta valido, se estiver tudo certo, nega o login, senao, bloqueia o login com aviso de usuario ja logado. o timestamp e sua atualizacao periodica serve para o caso de travamentos do desktop em que o usuario nao teve como sair da aplicacao e a chave ficaria esquecida la, invalidando o usuario ate uma limpeza manual. no exit da aplicacao dispare um evento que delete registro na tabela de logados... acho essa uma solucao elegante... mas com certeza vão haver muitas outras solucoes. 2009/1/12 marco ma...@tactor.com.br mailto:ma...@tactor.com.br Pessal estou com o seguinte dilema: Tenho alguns cliente que me pedem para que cada usuário se conecte ao sistema em uma máquina por vez. Para resolver o problema, criei os usuários da minha app como usuários do PG pois desta forma quando um usuário tentar efetuar o login na app, ela pergunta ao PG se o usuário já está logado, se não estiver logado a entrada no sistema continua (a conexão fica aberta até a app ser finalizada) caso contrário e entrada é barrada e ele é avisado que seu login está aberto em outra máquina. mas recentemente venho estudando o C# e tenho notado que ninguem utiliza uma conexão permanente ao banco de dados. todos tem seus ótimos argumentos. Gostaria de saber a opinião de vocês: Pensando no controle que preciso, é arriscado manter uma conexão permanente com o banco ? Se este procedimento for ruim e o melhor for o que o mundo c# diz: Conecte, pegue o que quer e desconecte. Como fariamos para manter o controle em que o usuário só possa ficar conectado em uma máquina. Não sei se fui claro mas ficaria muujuuuito grato em ler o parecer de vocês Obrigado. -- *Marco Antonio J. Victor* Fone/Fax: *11 2977-5406* www.tactor.com.br http://www.tactor.com.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Ivo Nascimento - Iann - | twitter: ivonascimento . | | http://ianntech.com.br. | | ZCE ID 227463685| - ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Nenhum vírus encontrado nessa mensagem recebida. Verificado por AVG - http://www.avgbrasil.com.br Versão: 8.0.197 / Banco de dados de
Re: [pgbr-geral] Conexão permanente
Em 12/01/09, marcoma...@tactor.com.br escreveu: Pessal estou com o seguinte dilema: Tenho alguns cliente que me pedem para que cada usuário se conecte ao sistema em uma máquina por vez. Para resolver o problema, criei os usuários da minha app como usuários do PG pois desta forma quando um usuário tentar efetuar o login na app, ela pergunta ao PG se o usuário já está logado, se não estiver logado a entrada no sistema continua (a conexão fica aberta até a app ser finalizada) caso contrário e entrada é barrada e ele é avisado que seu login está aberto em outra máquina. mas recentemente venho estudando o C# e tenho notado que ninguem utiliza uma conexão permanente ao banco de dados. todos tem seus ótimos argumentos. Gostaria de saber a opinião de vocês: Pensando no controle que preciso, é arriscado manter uma conexão permanente com o banco ? Se este procedimento for ruim e o melhor for o que o mundo c# diz: Conecte, pegue o que quer e desconecte. Como fariamos para manter o controle em que o usuário só possa ficar conectado em uma máquina. Não sei se fui claro mas ficaria muujuuuito grato em ler o parecer de vocês Na PGCon-br de 2007 Fábio Telles apresentou a palestra Fazendo um elefante passar por debaixo da porta. Veja algumas considerações que ele faz na parte Autenticando Aplicações no PostgreSQL. http://www.postgresql.org.br/Palestras_do_PGCon_Brasil_2007?action=AttachFiledo=gettarget=07_Fazendo_um_elefante_passar_debaixo_da_porta_-_F%C3%A1bio_Telles.pdf Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Conexão permanente
Ivo, será que não ficará muito tráfego na rede ? Pois além de toda hora que a app precisar de algo ela terá que reconecrar, excetutar algo e desconectar também teremos um timer (a cada n minutos) para validação do login ? Marco Antonio ivo nascimento escreveu: oi, ja usei esse tipo de controle em aplicacoes php e Borland Delphi e obtive sucesso, caso voce fique preocupado que o cliente tente em menos de 5 minutos, basta reduzir o tempo de validacao do timestamp. a operacao de validar o registro do login na tabela de logado eh muito simples e nao vai pesar nem no cliente nem no banco. 2009/1/12 marco ma...@tactor.com.br mailto:ma...@tactor.com.br Ivo, pelo que entendi você sugeriu algo como: Crio uma tabela para registrar quem está logado e a app atualisa o time stamp a cada 5 minutos ( por exemplo ). No caso se um novo login e o registro existir na tabela mas o tempo for maior que 5 minutos, isso indica que a conexão terminou de forma anormal. então loga normalmente. Caso sontrário o usuário está logado. Mesmo que o usuário tenha se desconectado de forma anormal, teria que aguardar completar o tempo (5 minutos) para logaar novamente. É isso ? Você usa este tidpo de controle ? Grato. ivo nascimento escreveu: Eu resolveria(sugeriria) esse seu problema, se voce desejasse resolver do lado do banco, com uma tabela de logados, em que quando uma pessoa loga cria um registro com o timestamp e ip da maquina... em cada operacao ou em um gatilho na propria aplicação rodando em determinado período, voce atualiza esse timestamp de acesso. assim que alguem tenta logar voce pergunta para essa tabela se aquele login ja esta em uso e se o periodo do lastaccess esta valido, se estiver tudo certo, nega o login, senao, bloqueia o login com aviso de usuario ja logado. o timestamp e sua atualizacao periodica serve para o caso de travamentos do desktop em que o usuario nao teve como sair da aplicacao e a chave ficaria esquecida la, invalidando o usuario ate uma limpeza manual. no exit da aplicacao dispare um evento que delete registro na tabela de logados... acho essa uma solucao elegante... mas com certeza vão haver muitas outras solucoes. 2009/1/12 marco ma...@tactor.com.br mailto:ma...@tactor.com.br Pessal estou com o seguinte dilema: Tenho alguns cliente que me pedem para que cada usuário se conecte ao sistema em uma máquina por vez. Para resolver o problema, criei os usuários da minha app como usuários do PG pois desta forma quando um usuário tentar efetuar o login na app, ela pergunta ao PG se o usuário já está logado, se não estiver logado a entrada no sistema continua (a conexão fica aberta até a app ser finalizada) caso contrário e entrada é barrada e ele é avisado que seu login está aberto em outra máquina. mas recentemente venho estudando o C# e tenho notado que ninguem utiliza uma conexão permanente ao banco de dados. todos tem seus ótimos argumentos. Gostaria de saber a opinião de vocês: Pensando no controle que preciso, é arriscado manter uma conexão permanente com o banco ? Se este procedimento for ruim e o melhor for o que o mundo c# diz: Conecte, pegue o que quer e desconecte. Como fariamos para manter o controle em que o usuário só possa ficar conectado em uma máquina. Não sei se fui claro mas ficaria muujuuuito grato em ler o parecer de vocês Obrigado. -- *Marco Antonio J. Victor* Fone/Fax: *11 2977-5406* www.tactor.com.br http://www.tactor.com.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Ivo Nascimento - Iann - | twitter: ivonascimento . | | http://ianntech.com.br. | | ZCE ID 227463685| - ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Nenhum vírus encontrado nessa mensagem recebida. Verificado por AVG - http://www.avgbrasil.com.br Versão: 8.0.197 / Banco de dados de vírus: 270.10.6/1888 - Data de Lançamento: 12/1/2009 07:04 -- *Marco Antonio J. Victor* Fone/Fax: *11 2977-5406* www.tactor.com.br
Re: [pgbr-geral] Conexão permanente
isso iria precisar ser avaliado, mas imagino que se deixar com um timer muito pequeno realmente voce vai ter um grande numero de requisicoes mas voce pode criar alguma politica como se houver tentativas de re-login a partir do mesmo ip a chave vale somente por 1 minuto(tecnicamente se a pessoa saiu do sistema normalmente a chave foi apagada e se o computador falhar[reboot etc...] a chave fica invalida rapidamente para aquele ip) se houver tentavivas de outros ips e a chave existir considere a chave valida por mais tempo, como 5 ou 10 minutos ... execute a atulizacao do timestamp de 5 ou 10 minutos de intervalo... isso vai reduzir de 60 requisicoes por hora para 12 ou 6 por hora... melhorando bastante o quisito uso de banda para trafego das requisicoes e respostas. acho que isso ajudaria bastante. grande abraco. 2009/1/12 marco ma...@tactor.com.br Ivo, será que não ficará muito tráfego na rede ? Pois além de toda hora que a app precisar de algo ela terá que reconecrar, excetutar algo e desconectar também teremos um timer (a cada n minutos) para validação do login ? Marco Antonio ivo nascimento escreveu: oi, ja usei esse tipo de controle em aplicacoes php e Borland Delphi e obtive sucesso, caso voce fique preocupado que o cliente tente em menos de 5 minutos, basta reduzir o tempo de validacao do timestamp. a operacao de validar o registro do login na tabela de logado eh muito simples e nao vai pesar nem no cliente nem no banco. 2009/1/12 marco ma...@tactor.com.br Ivo, pelo que entendi você sugeriu algo como: Crio uma tabela para registrar quem está logado e a app atualisa o time stamp a cada 5 minutos ( por exemplo ). No caso se um novo login e o registro existir na tabela mas o tempo for maior que 5 minutos, isso indica que a conexão terminou de forma anormal. então loga normalmente. Caso sontrário o usuário está logado. Mesmo que o usuário tenha se desconectado de forma anormal, teria que aguardar completar o tempo (5 minutos) para logaar novamente. É isso ? Você usa este tidpo de controle ? Grato. ivo nascimento escreveu: Eu resolveria(sugeriria) esse seu problema, se voce desejasse resolver do lado do banco, com uma tabela de logados, em que quando uma pessoa loga cria um registro com o timestamp e ip da maquina... em cada operacao ou em um gatilho na propria aplicação rodando em determinado período, voce atualiza esse timestamp de acesso. assim que alguem tenta logar voce pergunta para essa tabela se aquele login ja esta em uso e se o periodo do lastaccess esta valido, se estiver tudo certo, nega o login, senao, bloqueia o login com aviso de usuario ja logado. o timestamp e sua atualizacao periodica serve para o caso de travamentos do desktop em que o usuario nao teve como sair da aplicacao e a chave ficaria esquecida la, invalidando o usuario ate uma limpeza manual. no exit da aplicacao dispare um evento que delete registro na tabela de logados... acho essa uma solucao elegante... mas com certeza vão haver muitas outras solucoes. 2009/1/12 marco ma...@tactor.com.br Pessal estou com o seguinte dilema: Tenho alguns cliente que me pedem para que cada usuário se conecte ao sistema em uma máquina por vez. Para resolver o problema, criei os usuários da minha app como usuários do PG pois desta forma quando um usuário tentar efetuar o login na app, ela pergunta ao PG se o usuário já está logado, se não estiver logado a entrada no sistema continua (a conexão fica aberta até a app ser finalizada) caso contrário e entrada é barrada e ele é avisado que seu login está aberto em outra máquina. mas recentemente venho estudando o C# e tenho notado que ninguem utiliza uma conexão permanente ao banco de dados. todos tem seus ótimos argumentos. Gostaria de saber a opinião de vocês: Pensando no controle que preciso, é arriscado manter uma conexão permanente com o banco ? Se este procedimento for ruim e o melhor for o que o mundo c# diz: Conecte, pegue o que quer e desconecte. Como fariamos para manter o controle em que o usuário só possa ficar conectado em uma máquina. Não sei se fui claro mas ficaria muujuuuito grato em ler o parecer de vocês Obrigado. -- *Marco Antonio J. Victor* Fone/Fax: *11 2977-5406* www.tactor.com.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Ivo Nascimento - Iann - | twitter: ivonascimento . | | http://ianntech.com.br. | | ZCE ID 227463685| - -- ___ pgbr-geral mailing listpgbr-ge...@listas.postgresql.org.brhttps://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Nenhum vírus encontrado nessa mensagem recebida. Verificado