O caminho para o cache inteligente

Por que não construir cache você mesmo?

Muitos desenvolvedores de aplicativos não armazenam em cache nenhum dado ou, no máximo, armazenam em cache alguns dos dados estáticos somente leitura. Alguns desenvolvedores dão um passo adiante e armazenam dados em cache no "Estado de Sessão" entre as solicitações do usuário. No entanto, todas essas abordagens perdem o benefício fundamental do armazenamento em cache, que é armazenar em cache e compartilhar dados com todos os usuários do aplicativo. E esse tipo de cache deve ser muito inteligente para evitar problemas de integridade de dados no cache (através de dados obsoletos).

Se você leva a sério a melhoria do desempenho do seu aplicativo por meio do armazenamento em cache inteligente, você tem a questão óbvia de comprar versus construir. Há uma série de desvantagens na construção de sua própria solução de cache.

Em primeiro lugar, você está retirando importantes recursos de desenvolvimento de seu objetivo comercial de desenvolver seu aplicativo e colocando-os no desenvolvimento de uma infraestrutura que você poderia comprar facilmente. A segunda é que desenvolver uma solução de cache correta e inteligente requer muito esforço e você pode não ter a experiência certa em sua equipe para projetar e desenvolver um cache de alto desempenho que possa lidar com cenários complexos de simultaneidade e sincronização. E, finalmente, mesmo que você tenha a experiência, você está se esforçando muito em algo que está tirando você do foco do seu negócio.

Mesmo que você finalmente decida comprar uma solução de armazenamento em cache comercial, você deve garantir que ela forneça todos os recursos de armazenamento em cache e cluster necessários que seu aplicativo exigiria. Mesmo se você estiver começando com uma configuração de servidor único hoje, você desejaria uma solução de cache que pudesse crescer com seu aplicativo em um ambiente distribuído e em cluster.

Aumente o desempenho do aplicativo

O benefício mais óbvio de usar o cache é uma melhoria drástica no desempenho do seu aplicativo. O armazenamento em cache é o processo de armazenamento de dados (somente leitura e transacionais) próximo ao aplicativo que é usado com frequência. Normalmente, esses dados são armazenados na memória (como objetos), pois recuperar dados da memória é muito mais eficiente do que recuperá-los de outros locais, como um banco de dados.

Amplie o servidor de banco de dados sem atualizações de hardware caras

A maioria dos aplicativos executa muito mais operações de leitura do que operações de gravação (geralmente proporção 70:30 ou 80:20). E o armazenamento em cache de dados na camada do servidor de aplicativos permite que os aplicativos reduzam as viagens ao banco de dados para operações de leitura. Isso reduz drasticamente a carga no servidor de banco de dados.

Há dois benefícios óbvios disso. A primeira é que o servidor de banco de dados agora executa as operações de gravação muito mais rapidamente. E, em segundo lugar, o servidor de banco de dados agora pode lidar com um número muito maior de clientes sem exigir upgrades de hardware caros. Os servidores de banco de dados geralmente são o hardware mais caro na maioria das implantações de aplicativos N-Tier e, portanto, as economias de atualização de hardware aqui geralmente são muito altas.

Cache de dados transacionais

Tradicionalmente, os aplicativos da Web ou serviços da Web não armazenam dados em cache ou usam mecanismos primitivos como "Estado de Sessão" para armazenar em cache dados somente leitura. Há dois problemas com esta abordagem. A primeira é que a maioria dos dados que um aplicativo de missão crítica usa não é somente leitura, mas transacional e, portanto, o armazenamento em cache de dados somente leitura não é suficiente para melhorar o desempenho do aplicativo. Em segundo lugar, mesmo esses dados somente leitura não são compartilhados entre os usuários, que em um aplicativo da vida real chegam a milhares ou dezenas de milhares. Como resultado, a maioria desses aplicativos acaba indo para o servidor de banco de dados para obter a maioria dos dados de que precisam e, portanto, os problemas de desempenho.

Por outro lado, NCache permite que os aplicativos mantenham dados estáticos e transacionais no cache. E esses dados armazenados em cache estão disponíveis para todos os usuários no cluster de servidor. NCache em seguida, fornece vários mecanismos para garantir que os dados armazenados em cache não se tornem obsoletos e sejam sempre atualizados sempre que o aplicativo atualizar os dados no banco de dados. NCache também permite lidar com situações em que os dados devem ser atualizados de fora do aplicativo. Isto é conseguido através de um conceito de "dependências".

Gerenciar relacionamentos

A maioria dos aplicativos da vida real lida com dados complexos que não são apenas transacionais, mas contêm relacionamentos em várias camadas. Isso significa que, se você armazenar em cache quaisquer dados, também deverá lidar com seus relacionamentos. O cache deve conhecer esses relacionamentos para gerenciá-los em caso de operações de carregamento, inserção, atualização ou exclusão.

NCache gerencia relacionamentos entre objetos para que as alterações em um objeto possam desencadear alterações ou invalidações em todos os objetos relacionados. Da mesma forma, mesmo que seu aplicativo carregue um objeto primeiro e o coloque no cache e depois carregue seus objetos relacionados, ele pode dizer NCache sobre essas relações e NCache pode gerenciá-los.

Não apenas você pode gerenciar relacionamentos entre objetos em cache, mas também entre objetos em cache e recursos externos. NCache fornece dependências baseadas em chave e arquivo para essa finalidade. E essas dependências podem ser invocadas remotamente usando .NET Remoting. Isso ajuda a manter seu cache atualizado o tempo todo.

Sincronizar alterações de dados em clusters

Muitos aplicativos da Web e serviços da Web são executados em configurações de cluster de servidor/farm de servidores para lidar com um grande número de usuários. Nesses ambientes, se seu cache não estiver em cluster, nenhuma atualização de um servidor estará disponível para outros servidores. Como resultado, seus dados armazenados em cache se tornarão inconsistentes e obsoletos, levando a problemas de integridade de dados.

NCache é um poderoso cache clusterizado que sincroniza todas as alterações de dados em todo o cluster. Ele fornece um rico conjunto de topologias de cluster para ajudá-lo a atender aos seus requisitos específicos. Você pode escolher entre as topologias de Cache Espelhado, Cache Replicado, Cache Particionado e Cache de Réplica Particionada em seu cluster. Estes são discutidos com mais detalhes em NCache Topologias de Agrupamento.

NCache garante que as atualizações simultâneas do cache sejam tratadas de maneira serializada para evitar problemas de integridade de dados. Além disso, garante que todas as alterações no cache estejam imediatamente disponíveis para todos os nós do cluster. Isso permite que seu aplicativo trate NCache como um cache lógico em todo o cluster.

© Copyright Alachisoft 2002 - . Todos os direitos reservados. NCache é uma marca registrada da Diyatech Corp.