Ir para o conteúdo
oxyzero

[Resolvido] Armazenar grandes quantidades de informação - Melhor opção/estratégia?

Mensagens Recomendadas

oxyzero

Olá a todos,

Estou a construir um sistema que carrega vários tipos de informação a partir de ficheiros (a estrutura da informação é definida por mim, e até fazer o output dela vou manipulando-a; por exemplo, ler comandos que tenho escritos num ficheiro etc); e no final, dependendo da informação tenho um output em string, ou outputs que devem ser armazenados em variáveis, ou algo a que eu tenha fácil acesso para comparações etc.

Não se trata de inserir informação na base de dados, porque não tem nada a haver com isso. Sempre que um utilizador faz login por exemplo, eu não estar a colocar na base de dados essa informação, que contém dados do sistema, html, permissões e afins.

Não vou escrever essa informação em ficheiros temporários sempre que o utilizador entra no sistema, por isso essa opção está eliminada também.

Como não quero carregar a informação sempre que o utilizador muda de página (ou seja, carrego a informação uma vez e guardo-a), pensei em usar variáveis SESSION, mas será a melhor opção?

--

Além disso, um pouco fora dessa questão.

Eu estou a usar PHP para ler e manipular a informação que está contida em ficheiros, para depois fazer output do que for necessário. Tudo funciona rápido, sem qualquer problemas. A minha questão aqui é se a longo prazo funcionará da mesma forma a nível de performance, pois ler 3 ficheiros é diferente do que ler 30 ficheiros por exemplo.

Será que se por exemplo, usar Python para ler, manipular e devolver o output é mais eficiente? Digo Python, ou outra linguagem de scripting, claro.

Se alguém me pudesse dar uma luz nestes dois aspetos agradecia imenso.

Abraço ;)

Editado por oxyzero

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

O $_SESSION usa ficheiros para funcionar, por predefinição.

Pode ser uma boa solução para ti.

O phython tem-se revelado ligeiramente mais lento que o php em vários testes, mas n tenho informação suficiente para confirmar isso.

Mm assim, indicas bastante informação mas só uma pequena parte é que é útil para ajudar-te a resolver o teu problema...


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
oxyzero

Sim, realmente as variáveis do tipo SESSION são uma boa solução para mim. Estive também à procura um pouco e não encontrei melhor solução, por isso vou mesmo ter de ir por esta.

O PHP neste momento está a funcionar perfeitamente, bastante rápido. O meu medo seria se tivesse de carregar imensos ficheiros (que vou mais tarde). Mas também vou carregar a informação dos ficheiros todos 1 vez por cada sessão iniciada, logo não deve ser um grande problema. Caso seja necessário mudar de linguagem, é só fazer o port do sistema também, por isso não haverá grandes problemas também. É uma questão de testes.

Eu só queria saber mais algumas opiniões se possível, para depois poder fechar o tópico.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

APC?


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
oxyzero

O tipo de variável SESSION funciona perfeitamente como solução ao meu problema. O meu medo é se elas falham (porque posso ter 20 variáveis de um sistema, X variáveis de outro, Y em outro, e por aí fora).. ou seja, como realmente o sistema principal é dinâmico e permite aos seus sub-sistemas terem as suas próprias variáveis (e lá está, estou a guardar isto em variáveis SESSION, porque não quero estar a re-carregar tudo de novo dos ficheiros - que podem ou não ser muitos), eventualmente possa causar problemas. Eu nunca usei as variáveis SESSION para coisas assim deste tamanho daí o meu receio para ser honesto..

O APC parece ser realmente uma opção boa. Mas supostamente isso terá de ser instalado antes de ser usado, não vem default com os servidores, pelo menos pelo que li e também não tenho acesso ao usar o WAMP, logo essa opção é inválida, porque não posso instalar algo externo :\

Mas é sempre bom conhecer algo novo, e pode sempre ser-me útil no futuro. ty hehe :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
oxyzero

Grandes quantidades? Como assim? Quantos gigas? Porque operacoes passa a informacao?

Gigas não, não é informação gigantesca.. demoraria alguns anos (com um constante desenvolvimento de sistemas enormes para chegar a esse nível).

Eu digo grande, porque é algo que não consigo controlar. Quer dizer, o utilizador pode fazer algo que realmente ocupe gigas de informação do qual duvido a 100% que isso aconteça. Mas os subsistemas base, criados por mim, não passam de megas.

Basicamente, tenho alguns ficheiros que têm como conteúdo comandos. Ou seja, um comando inventado agora por exemplo: "executar:'teste.txt';" e ele vai executar o ficheiro que foi escrito e analisá-lo, ou criar variáveis através destas linhas etc.

Isto depois no final retorna-me um tipo de dado, conforme o que eu pedir. E a partir desse dado, crio uma variável de sessão para depois nas páginas aceder ao seu valor - lá está, eu não quero reler todos os ficheiros para obter os valores que preciso sempre que o utilizador muda de página, daí inserir esse valor nas variáveis de sessão.

A cena é que tinham-me dito para ter cuidado com as variáveis de SESSION porque podem não ser tão seguras, a nível de estabilidade. Eu só quero ter a certeza que não estou a construir algo que no futuro vá partir.

Tudo que encontrei enquanto procurei em relação a este assunto é que não haveria problema, mas pelo sim pelo não resolvi perguntar aqui.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
taviroquai

Hmm... quantos ficheiros sao? Qual o tamanho medio de cada ficheiro? Que valores guardas nas variaveis? Quantas variaveis por sessao (mais ou menos)?

Nao tas a fazer uma tempestade num copo de agua? Quantos pedidos ao servidor por segundo RPS?

Editado por taviroquai

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
oxyzero

Hmm... quantos ficheiros sao? Qual o tamanho medio de cada ficheiro? Que valores guardas nas variaveis? Quantas variaveis por sessao (mais ou menos)?

É muito complicado dizer, porque isso está a par de quem escreve o sistema.

Por enquanto, tenho valores do tipo menu (que representa um menu em HTML, e está escrito em json - ele lê item a item, e constrói um menu [para ser implementado o acesso ao sistema no menu do website]), valores de variáveis normais: integers; strings; E vou ainda tentar implementar mais valores, à medida que vão surgindo novas ideias ou necessidades [mas por enquanto, este é o kit básico].

O tamanho médio, lá está, depende do que o utilizador cria para o sistema, a não ser que seja um sistema extremamente complexo, enorme, os ficheiros vão normalmente ser bastante pequenos (kb's). O máximo mesmo seria apenas alguns mb's ( e lá está, o ficheiro já seria extremamente enorme, o que duvido completamente que aconteça).

Mas também ao longo do tempo eu vou melhorando isto, ou seja, vou criar algumas estruturas para facilitar o código e "puxar" menos na leitura.

Já em relação à quantidade de ficheiros, isso novamente está ao critério de quem faz o sistema, por isso lá está, varia e muito.

Se calhar ao dizer grandes quantidades no título, pode-se pensar logo em tamanhos enormes dos ficheiros e assim, mas o que eu me referia era a uma grande quantidade de informação que vou registar de uma só vez. Por exemplo:

- Sistema 1 tem: 3 ficheiros; 27 variáveis; 1 menu;

- Sistema 2 tem: 4 ficheiros; 54 variáveis;

- Sistema 3 tem: 2 ficheiros; 10 variáveis; 1 menu;

Logo, no total, eu vou fazer load de:

91 variáveis; -> 91 variáveis de SESSION;

Construir 2 menus (ler item a item do json que representa cada menu); - 2 variáveis de SESSION;

E ler, analisar e obter outro tipo de informação (isto ainda está para ser feito, mas vai ser possível) de 9 ficheiros. -> Interpretar, e registar informação;

Não estou a referir à quantidade de informação que uma variável SESSION tem, até porque as maiores vão ser de certeza as dos menus (que vão ter uma string html do menu), mas sim à grande quantidade de variáveis que vou ter que registar.

Haverá problemas em usar SESSION neste tipo de situação?

// Edit:

Talvez esteja a criar uma grande confusão à volta de algo simples, mas lá está, neste momento funciona tudo perfeitamente, sem qualquer problema. Não tenho qualquer tipo de preocupação em relação a isso.

A minha questão é realmente se não haverá problema então de usar a SESSION, quando as coisas começarem a ficar maiores. Se na altura der algum problema, eu resolvo - que remédio não é - mas pelo menos agora enquanto estou a construir tudo queria evitar o máximo de desastres possíveis. Porque estar a refazer tudo mais tarde é uma seca tremenda xd

Editado por oxyzero

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais
O APC parece ser realmente uma opção boa. Mas supostamente isso terá de ser instalado antes de ser usado, não vem default com os servidores, pelo menos pelo que li e também não tenho acesso ao usar o WAMP, logo essa opção é inválida, porque não posso instalar algo externo :\ Mas é sempre bom conhecer algo novo, e pode sempre ser-me útil no futuro. ty hehe :)

Eu tenho o XAMPP no meu servidor (meu computador) que é windows e o APC funciona exactamente como está no manual sem problemas.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
taviroquai

@oxyzero

Isso é uma gota no oceano :) Olha para 1 página no facebook... quantas variáveis achas que são usadas para gerar 1 página? Centenas... e se for alguém muito popular então deve ter mais de 100 rps...

É claro que quando se atinge um determinado nível de pedidos, o que conta é todo o sistema desde largura de banda, qualidade do alojamento, servidores super rápidos, muita memória na ordem dos teras... por aí... lê isto https://www.facebook.com/note.php?note_id=39391378919 (2008).

Estás preocupado se o teu sistema escala bem? Regula-te por este valor: média de resposta de cada pedido. Podes ver com o firebug. Se estiver abaixo do 10 ms então deve escalar bem.

EDIT: podes testar também o teu sistema com o ab (Apache Benchmark). Dá uma vista de olhos http://www.cyberciti.biz/tips/howto-performance-benchmarks-a-web-server.html

Editado por taviroquai

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
oxyzero

Eu acho que se explicasses o que queres atingir em concreto obtinhas respostas mais directa e úteis.

Concordo. Sou péssimo a explicar, é um defeito meu. :s

@oxyzero

Isso é uma gota no oceano :) Olha para 1 página no facebook... quantas variáveis achas que são usadas para gerar 1 página? Centenas... e se for alguém muito popular então deve ter mais de 100 rps...

É claro que quando se atinge um determinado nível de pedidos, o que conta é todo o sistema desde largura de banda, qualidade do alojamento, servidores super rápidos, muita memória na ordem dos teras... por aí... lê isto https://www.facebook.com/note.php?note_id=39391378919 (2008).

Estás preocupado se o teu sistema escala bem? Regula-te por este valor: média de resposta de cada pedido. Podes ver com o firebug. Se estiver abaixo do 10 ms então deve escalar bem.

EDIT: podes testar também o teu sistema com o ab (Apache Benchmark). Dá uma vista de olhos http://www.cyberciti.biz/tips/howto-performance-benchmarks-a-web-server.html

Estive a testar isso, e aconteceu algo estranho.

A primeira vez que testei no Firebug, o ficheiro onde faço o pedido para ler os ficheiros deu-me um tempo de resposta de 261 ms. Mas todos os restantes testes deram de entre 5-15 ms. (Tanto no Firebug, como no Chrome). Não sei o que se passou daquela primeira vez, e sim, eu testei também ao desligar e a limpar a cache do browser.

Por isso presumo que não vá existir "problemas".

Eu não costumo usar Firefox (porque sinceramente desgosto totalmente do browser), mas esqueci-me completamente de ver os tempos de resposta (seja no Firebug ou no Chrome).

E também estive a pesquisar ainda mais sobre este assunto, e acho que estou descansado em relação a isto, tanto pelo que encontrei como pelas vossas respostas.

Eu tenho o XAMPP no meu servidor (meu computador) que é windows e o APC funciona exactamente como está no manual sem problemas.

Estranho, então o WAMP não o deve trazer por default; pelo menos eu não consegui usar as funções dele.

--

Vou continuar a usar então as variáveis de sessão. Peço também desculpa se causei confusões ao explicar a situação, e sim, se calhar dramatizei um pouco demais a situação do "aguentar".

Obrigado a todos ;)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

A primeira vez que testei no Firebug, o ficheiro onde faço o pedido para ler os ficheiros deu-me um tempo de resposta de 261 ms. Mas todos os restantes testes deram de entre 5-15 ms. (Tanto no Firebug, como no Chrome). Não sei o que se passou daquela primeira vez, e sim, eu testei também ao desligar e a limpar a cache do browser.

Por isso presumo que não vá existir "problemas".

Isso está, quase de certeza, relacionado com cache do HDD. É normal.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.