Quando a SAP desenvolveu o banco de dados na memória HANA, descobriu que as próprias aplicações eram os piores inimigos do novo banco de dados na memória. A SAP percebeu que suas aplicações precisavam ser otimizadas para obterem os benefícios do HANA. Mas, embora a SAP tivesse apenas o HANA em mente, bancos de dados ricos em recursos, como a Oracle, podem oferecer suporte às mesmas otimizações e se beneficiar delas.
A SAP costumava pensar em um banco de dados como um armazenamento de dados que não era inteligente. Sempre que um usuário quiser fazer algo útil com os dados, eles deverão ser transferidos, pois a inteligência reside no SAP Application Server.
As desvantagens dessa abordagem são óbvias: se a soma de 1 milhão de valores precisar ser calculada e se esses valores representarem dinheiro em moedas diferentes, 1 milhão de valores individuais serão transferidos do servidor de banco de dados para o servidor de aplicações – apenas para serem descartados após o cálculo ter sido feito. O tráfego de rede causado por essa abordagem é responsável pelo mau desempenho.
Como resposta a esse insight, a SAP desenvolveu a estratégia "Push down": o código que requer cálculos com uso intensivo de dados, desde a camada da aplicação até a camada do banco de dados. Eles desenvolveram um modelo de programação completamente novo que permite ao código ABAP chamar (implícita ou explicitamente) procedimentos armazenados no banco de dados. E definiram uma biblioteca de procedimentos padrão, chamada SAP NetWeaver Core Data Services (CDS).
20 anos antes, a Oracle já tinha tido a mesma ideia e tomado a mesma decisão. Desde a versão 7, o Oracle Database permite que os desenvolvedores criem procedimentos e funções que podem ser armazenados e executados dentro do banco de dados. Portanto, também foi possível disponibilizar CDS para o Oracle Database e, hoje, os desenvolvedores de aplicações SAP podem usá-lo.
Os modelos de dados da SAP (o conjunto de tabelas que uma aplicação utiliza e as relações entre elas) foram definidos há 15 ou 20 anos e otimizados para bancos de dados orientados a disco. Mas, como pôde ser observado, o que era uma otimização na era da computação baseada em disco se tornou um obstáculo na era da computação na memória.
O exemplo mais famoso é provavelmente a estrutura interna de um cubo SAP BW. O que, da perspectiva de negócios ou do usuário, se parece com um único "cubo", é na verdade um conjunto de várias tabelas, e os relacionamentos entre elas podem ser descritos como uma hierarquia de vários níveis (esquema "star" ou "snowflake"). Essa estrutura complexa, que requer muitas junções quando uma consulta ou um relatório é executado, torna os bancos de dados na memória consideravelmente mais lentos. Portanto, a SAP projetou um modelo de dados novo e mais simples para o SAP BW no HANA e, consequentemente, o chamou de HANA-Optimized InfoCubes. Mas esse novo modelo de dados não é otimizado apenas para o HANA. Ele é otimizado para computação na memória em geral. Portanto, os usuários do SAP on Oracle que ativaram o Oracle Database In-Memory também pode implementá-lo, sendo a única diferença o nome (Flat InfoCubes ou simplesmente Flat Cubes).
Uma otimização menos famosa, mas também importante, é o Table Declustering. Uma tabela de clusters armazena um registro completo (lógico) em uma única coluna (física) da tabela. Um valor tão complexo pode ser interpretado pelo SAP Application Server, mas não por um servidor de banco de dados – o que significa que o "code pushdown" não é possível se uma tabela de clusters estiver envolvida. Portanto, a SAP agora oferece suporte para o Table Declustering, tanto para o HANA quanto para o Oracle Database.
Os benefícios da estrutura CDS que acabamos de descrever não se restringem de forma alguma às aplicações SAP (ou seja, aplicações padrão criadas por desenvolvedores SAP). Para os clientes, as aplicações desenvolvidas internamente são uma parte essencial do cenário SAP. Muitas dessas aplicações podem se beneficiar significativamente do uso de recursos do CDS.
As visualizações CDS podem ser expostas via OData. Com base na exposição OData de CDS, é bastante simples criar aplicações SAP Fiori usando o framework de desenvolvimento SAP WEB IDE. Para obter mais detalhes, consulte o relatório ABAP Core Data Services em anyDB.