As raízes do IDMS remontam ao sistema de gerenciamento de banco de dados pioneiro chamado Integrated Data Store (IDS), desenvolvido na General Electric por uma equipe liderada por Charles Bachman e lançada pela primeira vez em 1964. No início dos anos 1960, os IDs foram retirados de sua forma original, por o grupo de computadores da divisão química de B.F. Goodrich e reescrito em um idioma chamado ISL (ISL). O ISL foi projetado como uma linguagem de programação do sistema portátil capaz de produzir código para uma variedade de máquinas de destino. Como a ISL foi realmente escrita na ISL, ela foi capaz de ser portada para outras arquiteturas de máquinas com relativa facilidade e, em seguida, produzir código que executaria sobre eles.
O grupo de computadores da Divisão Química pensou em vender cópias de IDMs para outras empresas, mas foi informado pela administração que eles não estavam no negócio de produtos de software. Eventualmente, um acordo foi fechado com John Cullinane para comprar os direitos e comercializar o produto. Como a Cullinane foi obrigada a remeter royalties de volta a B.F. Goodrich, todos os produtos complementares foram listados e cobrados como produtos separados-mesmo que fossem obrigatórios para o produto principal do IDMS funcionar. Isso às vezes confusa clientes.
As plataformas originais eram o computador de comutação de mensagens GE 235 e GE Datanet-30: posteriormente o produto foi portado para os mainframes IBM e para o hardware DEC e da ICL. A versão portada do IBM é executada nos sistemas de mainframe IBM (System/360, System/370, System/390, ZSeries, System Z9). Em meados da década de 1980, afirmou-se que cerca de 2.500 licenças de IDMs foram vendidas. Os usuários incluíram o Comando Aéreo Estratégico, Ford do Canadá, Ford da Europa, Carros Jaguar, Clarks Shoes UK, AXA/PPP, MapFre, Royal Insurance, Tesco, Manulife, Hudson's Bay Company, Cleveland Clinic, Bank of Canada, General Electric, Aetna e BT no Reino Unido.
Uma versão para uso na série Decsystem de computadores foi vendida para DEC e foi comercializada como DBMS10 e posteriormente DBMS20. Em 1976, o código -fonte foi licenciado para a ICL, que transportou o software para executar seus mainframes da série 2900 e, posteriormente, também na faixa mais antiga de 1900. O desenvolvimento contínuo da ICL do software independentemente da Cullinane, vendendo o produto portado original com o nome ICL 2900 IDMS e uma versão aprimorada como IDMSX. Nesse formulário, foi usado por muitos grandes usuários do Reino Unido, um exemplo sendo o sistema de pagamento conforme o ano, operado pela Receita Inlandéticos. Muitos desses sistemas IDMSX para o governo do Reino Unido ainda estavam em execução em 2013.
No início e meados da década de 1980, os sistemas de gerenciamento de banco de dados relacionais começaram a se tornar mais populares, incentivados pelo aumento da energia de hardware e a mudança para minicomputadores e arquitetura cliente-servidor. Os bancos de dados relacionais ofereceram melhoria produtividade do desenvolvimento em relação aos sistemas de codasil, e as objeções tradicionais baseadas no mau desempenho diminuíram lentamente.
Cullinet tentou continuar competindo contra o DB2 da IBM e outros bancos de dados relacionais, desenvolvendo um front-end relacional e uma variedade de ferramentas de produtividade. Isso incluía a instalação automática do sistema (ASF), que utilizava um recurso IDMS pré-existente chamado LRF (Logical Record Facility). O ASF era um gerador de banco de dados de preenchimento que também desenvolveria uma mini-aplicação para manter as tabelas.
É difícil julgar se esses recursos podem ter sido bem -sucedidos em prolongar a vida útil do produto, mas causaram pouco impacto a longo prazo. Os usuários que ficaram com o IDMS estavam interessados principalmente em seu alto desempenho, não em seus recursos relacionais. Foi amplamente reconhecido (ajudado por uma campanha de alto perfil por E. F. Codd, o pai do modelo relacional) que havia uma diferença significativa entre um banco de dados relacional e um banco de dados de rede com um verniz relacional.
Em 1989, a Computer Associates continuou após a aquisição da Cullinet com o desenvolvimento e lançou a versão 12.0 com o SQL completo em 1992–93. A CA Technologies continuou a comercializar e apoiar os CADMs e os IDMs aprimorados nas versões subsequentes por suporte a TCP/IP, suporte a duas fases, Publicação XML, Suporte ao Processador Especial de Ziip, acesso habilitado para Web em combinação com o servidor CADMS, a opção SQL e GUI Administração de banco de dados via ferramenta CADMS Visual DBA. Hoje, os sistemas CA-IDMs ainda estão administrando negócios em todo o mundo. Muitos clientes optaram por facilitar seus aplicativos através da opção CA-IDMS SQL, que faz parte da estratégia de banco de dados dupla da CA Technologies.
Um dos recursos sofisticados do IDMS foi o seu dicionário de dados integrado integrado (IDD). O IDD foi desenvolvido principalmente para manter as definições de banco de dados. Era em si um banco de dados IDMS. DBAs (administradores de banco de dados) e outros usuários interfiguraram com o IDD usando um idioma chamado Data Dictionary Definition Language (DDDL). O IDD também foi usado para armazenar definições e codificar para outros produtos da família IDMS, como ADS/Online e IDMS-DC. O poder da IDD era que era extensível e poderia ser usado para criar definições de praticamente qualquer coisa. Algumas empresas o usaram para desenvolver documentação interna.
O modelo de dados oferecido aos usuários é o modelo de rede de codasil. Os principais conceitos de estruturação neste modelo são registros e conjuntos. Os registros seguem essencialmente o padrão COBOL, consistindo em campos de diferentes tipos: permite uma estrutura interna complexa, como repetir itens e repetir grupos.
O conceito de estruturação mais distinto no modelo de codasil é o conjunto. Não deve ser confundido com um conjunto matemático, um conjunto de codasil representa uma relação individual entre registros: um proprietário, muitos membros. O fato de um registro ser um membro em muitos conjuntos diferentes é o fator -chave que distingue o modelo de rede do modelo hierárquico anterior. Como nos registros, cada conjunto pertence a um tipo de conjunto nomeado (diferentes tipos de conjuntos modelam diferentes relações lógicas). Os conjuntos são de fato ordenados e a sequência de registros em um conjunto pode ser usada para transmitir informações. Um registro pode participar como proprietário e membro de qualquer número de conjuntos.
Os registros têm identidade, a identidade representada por um valor conhecido como chave de banco de dados. No IDMS, como na maioria das outras implementações de codasil, a chave do banco de dados está diretamente relacionada ao endereço físico do registro no disco. As teclas do banco de dados também são usadas como ponteiros para implementar conjuntos na forma de listas e árvores vinculadas. Essa correspondência estreita entre o modelo lógico e a implementação física (que não é uma parte estritamente necessária do modelo de codasil, mas foi uma característica de todas as implementações bem -sucedidas) é responsável pela eficiência da recuperação do banco de dados, mas também torna operações como o carregamento do banco de dados e reestruturar bastante caro.
Os registros podem ser acessados diretamente pela chave do banco de dados, seguindo os relacionamentos definidos ou por acesso direto usando valores -chave. Inicialmente, o único acesso direto foi através do hash, um mecanismo conhecido no modelo de codasil como acesso ao Calc. No IDMS, o Calc Access é implementado através de um conjunto interno, vinculando todos os registros que compartilham o mesmo valor de hash a um registro do proprietário que ocupa os primeiros bytes de cada página de disco.
Nos anos seguintes, algumas versões do IDMS adicionaram a capacidade de acessar registros usando índices semelhantes a BTTREE.
O IDMS organiza seus bancos de dados como uma série de arquivos. Esses arquivos são mapeados e pré-formatados nas chamadas áreas. As áreas são subdivididas em páginas que correspondem a blocos físicos no disco. Os registros do banco de dados são armazenados dentro desses blocos.
O DBA aloca um número fixo de páginas em um arquivo para cada área. O DBA define então quais registros devem ser armazenados em cada área e detalhes de como eles devem ser armazenados.
O IDMS intercala páginas especiais de alocação espacial em todo o banco de dados. Essas páginas são usadas para acompanhar o espaço livre disponível em cada página no banco de dados. Para reduzir os requisitos de E/S, o espaço livre é rastreado apenas para todas as páginas quando o espaço livre para a área cair abaixo de 30%.
Quatro métodos estão disponíveis para armazenar registros em um banco de dados IDMS: direto, sequencial, calc e via. A versão Fujitsu/ICL IDMSX estende -a com mais dois métodos, Page Direct e Random.
No modo direto, a tecla de banco de dados de destino é especificada pelo usuário e é armazenada o mais próximo possível dessa tecla DB, com a tecla DB real na qual o registro é armazenado sendo retornado ao programa de aplicativos.
Posicionamento seqüencial (não deve ser confundido com sequencial indexado), simplesmente coloca cada novo registro no final da área. Esta opção raramente é usada.
Calc usa um algoritmo de hash para decidir onde colocar o registro; A chave de hash então fornece uma recuperação eficiente do registro. Toda a área de calc é pré -formatada, cada um com um cabeçalho composto por um registro especial de "proprietário" especial. O algoritmo de hash determina um número de página (a partir do qual o endereço do disco físico pode ser determinado), e o registro é armazenado nesta página ou o mais próximo possível, e está vinculado ao registro do cabeçalho nessa página usando o cálculo definir. Os registros do calc estão vinculados ao registro do proprietário do calc da página usando uma única lista de links (ponteiros). O proprietário do calc localizado no cabeçalho da página possui, portanto, o conjunto de todos os registros que têm como objetivo para sua página específica (se os registros são armazenados nessa página ou, no caso de um estouro, em outra página).
O CALC fornece armazenamento e recuperação extremamente eficientes: o IDMS pode recuperar um registro de calc nas operações de 1,1 E/S. No entanto, o método não lida bem com as alterações no valor da chave primária e a reorganização cara é necessária se o número de páginas precisar ser expandido. Um trabalho de trabalho é expandir a área e executar um programa de aplicativo que digitaliza a área sequencialmente para cada registro de calc e usa o verbo modificar para atualizar cada registro. Isso resulta em cada registro de calc está conectado ao conjunto de calc para a página de destino correta, conforme calculado para o novo intervalo de páginas da área. A desvantagem desse método é que desaparecendo poucos registros de calc estarão agora em suas páginas de destino, e a navegação no conjunto de cálculo de cada página provavelmente envolverá muitas operações de IO. Como resultado, recomenda-se apenas usar essa subida em circunstâncias extremas, à medida que o desempenho sofrerá.
Via a colocação tenta armazenar um recorde perto de seu proprietário em um conjunto específico. Normalmente, os registros são agrupados na mesma página física que o proprietário. Isso leva à navegação eficiente quando o registro é acessado seguindo esse relacionamento definido. (VIA permite que os registros sejam armazenados em uma área de IDMS diferente para que possam ser armazenados separadamente do proprietário, mas permanecem agrupados para eficiência. No IDMSX, eles também podem ser compensados do proprietário por um número definido de páginas).
Page Direct (somente IDMSX) é semelhante ao modo direto, no entanto, um número de página de banco de dados de destino é especificado e o registro está conectado à cadeia de calc para essa página.
Random (somente o IDMSX) aloca um número de página de destino para a ocorrência de registro quando é armazenada usando o algoritmo de calc (isso usa uma chave no registro ou no caso de randomizado não-chave, usa a data e a hora do armazenamento como um semente para o algoritmo Calc).
Os conjuntos são geralmente mantidos como listas vinculadas, usando a chave do banco de dados como ponteiro. Cada registro inclui um link avançado para o próximo registro; O designer de banco de dados pode escolher se deve incluir ponteiros do proprietário e ponteiros anteriores (se não forem fornecidos, a navegação nessas direções será mais lenta).
Algumas versões dos IDMs incluíram posteriormente a capacidade de definir índices: índices registrados, permitindo que os registros sejam localizados a partir do conhecimento de uma chave secundária ou definir índices, permitindo que os membros de um conjunto sejam recuperados pelo valor -chave.
Os registros de posicionamento direto e aleatório da página IDMSX são normalmente usados em conjunto com os índices de registro, conforme descrito acima. Os próprios índices estão sujeitos a regras de colocação, diretamente (o que realmente significa "calc usando o ID do índice como chave") ou calc.
O IDMS possui associações de usuários sem fins lucrativos que usam ou suportam CADMs ou produtos relacionados. Eles incluem:
CA IDMS (IUA EIUA) Global User CommunityAID – Anwendervereinigung IDMS DeutschlandAustralian IDMS User GroupBeNeLux IDMS User AssociationChicago IDMS Users GroupCommittee Quebec Users of IDMSDallas CA-IDMS Users ForumEuropean IDMS User GroupFinnish IDMS User GroupAUI – Association des Utilisateurs d'IDMS – FranceRocky Mountain IDMS Users GroupUK IDMS User Association