sexta-feira, 23 de novembro de 2012

Ver conteúdo de uma Procedure - Oracle

 

Segue duas maneiras para visualização do “corpo” de uma procedure no Oracle

  1. Script 1

SET SERVEROUTPUT ON SIZE 200000
declare

begin
  FOR CR IN (select *
              from DBA_source u
             where u.type = 'PROCEDURE'
               AND U.OWNER = 'NOME_USUARIO'
               AND U.NAME LIKE '%NOME_PROCEDURE%' ) LOOP
              
     DBMS_OUTPUT.put_line(CR.TEXT);
              
  END LOOP;
end;

Obs: Substituir NOME_USUARIO pelo owner e NOME_PROCEDURE pelo nome da procedure.

 

2. Script 2

SELECT dbms_metadata.get_ddl( 'PROCEDURE','USP_GOMM_CRIA_MVIEW') FROM DUAL;

Obrigado

terça-feira, 13 de novembro de 2012

Index Clustered X Nonclustered- SqlServer

 

Segue algumas das diferenças entre os dois tipos de index do SqlServer:

O tipo de index Clustered realiza a ordenação dos dados com os valores da coluna que foi selecionada para fazer parte do index, ou seja, a ordem é realizada com os próprios dados da coluna pertencente ao index. Dessa forma as informações são gravadas na tabela física na mesma ordem do index facilitando bastante a localização de registros na tabela.

Por ordenar fisicamente os dados na tabela de acordo como o valor da coluna do index, para cada tabela podemos ter apenas um index Clustered.

Apesar de melhorar o desempenho na localização de um registro, temos um tempo extra gasto com inclusões ou exclusões de dados, isso acontece pois caso seja incluído ou excluído um registro pode ser que a ordem seja alterada e que ocorra um reposicionamento dos dados.

Em uma tabela pode existir index Clustered e Nonclustered, mas devemos lembrar de sempre criar primeiramente o index Clustered já que com sua criação todos os dados serão reposicionados na tabela para assumir a ordem da coluna que ira compor o index.

O tipo de index Nonclustered funciona de maneira diferente do Clustered, ou seja, no momento da criação do index as informações físicas da tabela não são reposicionadas, ficando assim o armazenamento de ordem aleatória.

É indicado o uso de index Nonclustered quando há necessidade de localizar dados que possuem diferentes tipos de critérios, ou seja, é indicado quando na localização de registros o filtro realizada utiliza diferentes campos podendo ter um ou mais index Nonclustered para cada critério selecionado no filtro da query.

Obrigado

terça-feira, 30 de outubro de 2012

Carregando dados de vários arquivos–QlikView

 

 

Segue um video que mostra como realizar o load de vários arquivos CSVs

 

Carregando dados de várias fontes CSVs

Obrigado

quarta-feira, 26 de setembro de 2012

Ordenar a saída do comando ls a partir de um substring do nome dos arquivos listados

Recentemente, me deparei com uma situação inusitada e precisei fazer um shell script para resolver.

Um fornecedor envia uns arquivos para serem processados em ordem de criação, mas não adianta ordenar por data/hora de criação porque é comum criar arquivos retroativos, ou seja, tem que ordenar pelo nome (que contém data e hora no formato DDMMYY).
Por causa do formato de data usado na formação do nome do arquivo, a ordem de processamento por nome também pode falhar.

Formato do nome do arquivo:  arq_DDMMYYHHMISS

O script (abaixo), pega a saída do comando "ls", trata parte do nome dos arquivos e ordena por essa parte (no caso, inverte o formato da data contido no nome de cada arquivo).

No final, retorna a lista com o nome completo do arquivo conforme nova ordenação.

Script
_______________________________________________________________
#!/bin/ksh
ls -l >/dev/null 2>/dev/null
if [ $? = 0 ]
then
   directory=/home0/users/josbar
   if [ -e $directory/temp.txt ]
   then
     rm $directory/temp.txt
   fi

   for FILE_RCV in $directory/arqpro*
   do
      if [ -s $FILE_RCV ]
      then
        file_name=`basename $FILE_RCV`
        seg=$(echo $file_name | cut -c18-19)
        min=$(echo $file_name | cut -c16-17)
        hor=$(echo $file_name | cut -c14-15)
        day=$(echo $file_name | cut -c8-9)
        month=$(echo $file_name | cut -c10-11)
        year=$(echo $file_name |cut -c12-13)
        order_by=$year$month$day$hor$min$seg
        echo $order_by - $FILE_RCV >> $directory/temp.txt
      fi
   done
   cat $directory/temp.txt | sort -n | cut -c16-55
fi
_____________________________________________________________

terça-feira, 11 de setembro de 2012

Usuários associados a uma Rule – Sql Server

Segue comando para identifica os usuários associados a uma Rule:

sp_helpgroup Nome_rule

Exemplo:

sp_helpgroup Usuarios_consulta

Group_name Group_id Users_in_group Userid
Usuarios_consulta 5 fmartinez 1
Usuarios_consulta 5 rcorreia 2
Usuarios_consulta 5 pedroso 3
Usuarios_consulta 5 josineis 4

 

[]s

terça-feira, 4 de setembro de 2012

Query Notification – Sql Server

Query Notification ou notificações de consulta foi introduzido na versão Microsoft SQL Server 2005, permitindo notificar aplicativos quando os dados carregados pela aplicação, forem alterados na base de dados. Este recurso é muito útil para aplicativos que utilizam informações de banco de dados em cache (muito utilizado em aplicativos da Web) e precisam ser notificado quando os dados de origem são alterados.

As aplicações podem tirar proveito do recurso Query Notification para reduzir as idas e vindas ao banco de dados. Em vez de utilizar utilizar processos amarradas a job que são executados periodiacamente, as aplicações podem ser notificadas automaticamente quando os resultados estiverem desatualizados.

Exemplo:

Imagine uma pagina Web que exibe os 10 produtos mais vendidos na última hora, a cada nova requisição da pagina, não é necessário consultar toda a lista de pedido para identificar os mais vendidos. Podemos armazenar essa informação no Cache e utilizar do recurso Query Notification assim que a lista de produtos mais vendidos for alterada na base de dados.

Assim que o aplicativo receber a Notificação, codificamos para que seja executado um Select ou Procedure que recupera os produtos mais vendidos , limpamos e atualizamos o cache.

O Database Engine usa o Service Broker para entregar mensagens de notificação. Portanto, o Service Broker deve estar ativo no banco de dados onde o aplicativo estiver solicitando o serviço.

Para saber mais e como implementar, consulte:  http://msdn.microsoft.com/en-us/library/ms175110(v=sql.105).aspx

[]s

segunda-feira, 3 de setembro de 2012

Principais técnicas do Data Mining

  1. Arvore de decisões

A analise dos dados baseado em árvore de decisão trabalha com testes automáticos em todos os valores a fim de identificar um meio eficiente de construir classificadores que interpretem ou identifique grupos ou informações úteis baseadas nos valores de atributos de um conjunto de dados.

A utilização de árvore de decisão tem como princípio categorizar os dados ou mesmo na utilização de regras de fácil entendimento explicadas e traduzidas para linguagem natural.

Na verdade a essência do processo é uma série de declarações if-elses, que quando aplicados a um registro de uma base de dados , resultam na classificação daquele registro. Uma das características da árvore de decisão não é a sua construção a partir de classificação de um conjunto de dados, e sim a sua habilidade de aprendizado e treinamento. Segundo (CHAPELLE et al., 2006) O aprendizado indutivo de árvores de decisão é geralmente dividido em aprendizado supervisionado e não supervisionado.

Quando o aprendizado ou treinamento é finalizado, é possível alimentar sua árvore de decisão construída a partir de exemplos com novos casos a fim de classifica-los.

Exemplo:

clip_image001

2. Redes Neurais

As Redes Neurais Artificiais utilizam um conjunto de elementos de processamento (ou nós) análogos aos neurônios no cérebro. Estes elementos de processamento são interconectados em uma rede que pode identificar padrões nos dados uma vez expostos aos mesmos, ou seja, a rede aprende através da experiência, tais como as pessoas (DIN, 1998).

As Redes Neurais tentam identificar modelos ou padrões nos dados, sua abordagem computacional esta diretamente envolvida com estruturas matemáticas com habilidade de absorver o conhecimento.

Uma Rede Neural artificial consiste em diversos elementos interconectados chamados neurônios ou nós que possuem entrada , saída e processamento de dados e são organizados em camadas que aprendem através da modificação das conexões.

Exemplo:

clip_image001[5]

3 Análise de Agrupamento

Nessa técnica os dados são agrupados em clusters conforme identificado uma classificação ou grupo que são construídos com base na semelhança nos dados percebendo características de cada grupo. Dessa forma objetos dentro do mesmo grupo são os mais semelhantes possíveis, enquanto objetos de outros grupos são os mais deferentes possíveis.

Por exemplo, para analise de crédito supondo que os objetos dessa cadeia de relacionamento sejam os clientes, e que tenham vários atributos como, idade, salário e sexo analisando esses dados com data mining utilizando a técnica de agrupamento, podemos encontrar grupos de clientes com determinada faixa de idade enquadrado em uma baixa faixa salarial e outros grupos de cliente com alta faixa salarial com idade inferiores, podendo assim traçar perfis de concessão de crédito

Essa diferenciação dos clientes em grupos pode ser bastante útil, já que clientes de grupos diferentes, presumidamente, tendem a ter comportamentos bem diferentes (FREITAS, 2000).

4 Indução de Regras

Nessa técnica busca-se detectar padrões ou tendências dentro de um grupo de informação ou de regras que obedeçam a um critério previamente estabelecido por um consultor financeiro de risco de crédito.

Por exemplo, no caso de risco de crédito poderíamos ter o atributo tipo do cliente, sexo, idade e limite de crédito. Analisando essa variáveis o sistema de mineração de dados poderia identificar uma regra de previsão onde:

SE idade > 18 e Sexo = ‘M’ e Tipo = ‘A’

Limite de crédito de 20000 para compra de automóvel

5 Analise Estatística de séries temporais

A estatística é uma das técnicas mais usadas e mais antigas da mineração de dados esta diretamente ligada a todas as outras técnicas.

É definida como uma técnica baseada em modelos matemáticos para conhecimento dos dados, tendo fortemente o envolvimento do usuário.

[]s

sexta-feira, 31 de agosto de 2012

Locks – Sybase IQ

Para vericar os Objetos com lock no Banco de dados SYBASE IQ, utilizamos a seguinte procedure:

sp_iqlocks ([connection,] [[owner.] table_name] max_locks,] [sort_order])

Name Type Descrição

connection

Integer

Retorna os bloqueis do ID da conexão. O padrão é zero, que retorna informações sobre todas as conexões.

owner.table_name

char(128)

Nome da tabela. Com esta opção, a procedure retorna informações sobre bloqueios somente da tabela. O padrão é NULL, que retorna informações sobre todas as tabelas do banco de dados.

max_locks

Integer

Número máximo de bloqueios que devem ser exibidos. O padrão é 0, que retorna todas as informações de bloqueio.

sort_order

char(1)

Ordem de retorno dos bloqueios:
Tipo C por conexão (padrão)
Tipo T por table_name

 

Ao ser executada a procedure de acordo com os parametros acima podemos analisar as seguintes informações:

Coluna Tipo Descrição

conn_name

VARCHAR(128)

Nome da conexão atual

conn_id

INTEGER

ID da conexão com lock

user_id

CHAR(128)

Usuário causador do lock

table_type

CHAR(6)

O tipo da tabela:

  • BASE – para tabela
  • GLBTMP – para tabela temporária Global
  • MVIEW – para materialized view

creator

VARCHAR(128)

Owner da tabela

table_name

VARCHAR(128)

Nome da tabela com Lock

index_id

INTEGER

ID do indice

lock_class

CHAR(8)

Tipo do Lock.

  • S – Share
  • SW – Share and Write
  • EW – exclusive and Write
  • E – exclusive
  • P – Phantom
  • A – Antiphantom
  • W – Write
  • T – The lock is with respect to a sequencial scan
  • * – the lock is with respect to all scans
  • nnn – Index number; the lock is with respect to a particular index

lock_duration

 

CHAR(11)

Duração do bloqueio

lock_type

CHAR(9)

Identifica o lock (table, procedure,view)

row_identifier

UNSIGNED BIGINT

Identifica a linha

 

Exemplo a seguir foi executada a procedure sem a passagem de parametros, ou seja, neste caso serão utilizados os valores default:

sp_iqlocks
conn_name  conn_id  user_id  table_type  creator  table_name   =========  =======  =======  ==========  =======  ==========   con1       70187172 'mary'   BASE        DBA       t1         


index_id lock_class  lock_duration  lock_type  row_identifier
======== ==========  =============  =========  ==============
ASIQ_IDX Table       Position       Table      1
Fonte - http://infocenter.sybase.com
[]s

quarta-feira, 29 de agosto de 2012

Boas práticas ao escrever uma Procedure - SQL Server

  1. Utilize recuo/endentação adequada, pois terá melhor legibilidade melhorando seu entendimento futuro e de outras pessoas
  2. Escreva os comentários apropriados entre as lógicas para que assim, os outros possam entender rapidamente.
  3. Escreva todas as palavras-chave do SQL Server em CAPS. Por exemplo SELECT, FROM e CREATE.
  4. Procure nomear suas procedures com um nome intuitivo ao processo que ela executa
  5. Declare todas as variáveis no início da procedure
  6. Verifique o uso de variáveis desnecessárias, pois elas ocupam espaço na memória, tente reutiliza-las dentro do código
  7. Não utilizar as iniciais SP_XXX em suas procedures. Utilize como inicial Pr_XXX pois ficará mais fácil identificar suas procedures entre as nativas do Sql Server. Inclusive na própria documentação do Sql Server já diz - “Recomendamos fortemente que você não use o prefixo sp_ no nome de procedimento. Este prefixo é usado pelo SQL Server para designar procedimentos armazenados de sistema. “
  8. Defina o SET NOCOUNT ON  no início do procedimento armazenado para evitar a mensagem desnecessária, como número de linhas afetadas pelo SQL Server.
  9. Tente fazer uso de tabelas temporárias com moderação, pois elas ocupam espaço no TempDB, além disso procedimento armazenados geralmente utilizam plano de execução em Cache, com o uso de tabelas temporárias é forçada uma nova compilação.
  10. Nunca traga todas as colunas de uma consulta (SELECT *)  a não ser que for realmente necessário, use apenas colunas específicas que serão utilizadas no resultado.
  11. Tente evitar o cursor no procedimento armazenado, ele consome mais memória. Tente utilizar a variável de tabela e while loop para iterar o conjunto de resultados da consulta.
  12. Nos parâmetros de entrada da procedure, defina os types com os mesmos tamanhos e tipos das tabelas. Por exemplo, Nome Char(10) na tabela, mas você declara Nome Char(25) na procedure.
  13. Use a instrução catch Try corretamente no procedimento armazenado para lidar com os erros em tempo de execução.
  14. Se o retorno da procedure for uma única coluna/linha, prefira utilizar parâmetros de saída na procedure.
  15. Evite utilização de sub-queries ao invés disso utilize inner join
  16. Em condições de verificação de existência (exists) utilize Select top 1
  17. Em consultas  (SELECT * FROM TbProduto where id = @id) para que seu plano de execução seja reaproveitado deve ser utilizado conforme exemplo anterior, mas você estiver usando uma consulta SQL como “SELECT * FROM Tbproduto where id = "+ @ eid, dessa forma não será reutizado o plano
  18. Use o ORDER BY e DISTINCT, TOP somente quando for necessário.
  19. Verifique a necessidade de índices entre colunas de tabelas grandes que realizam joins ou filtros por essas colunas
  20. Verifique se as colunas que compõem os joins utilizam datatypes diferentes, um deles será convertido para o outro. O datatype convertido é o hierarquicamente inferior. O otimizador não consegue escolher um índice na coluna que é convertida.

[]s

segunda-feira, 27 de agosto de 2012

DeadLock – Como identificar - Oracle

 

Para verificar problemas de bloqueio em seu banco de dados, deve seguir os passos abaixo:

1. Para verificar qual a sessão que esta realizando o bloqueio, execute o select abaixo:

select sid, serial#, username, command, lockwait, osuser from v$session where lockwait is not null

2. Identificado a sessão podemos mata-la para que o bloqueio seja liberado, para isso substitua no script abaixo a sid e serial# coletados na consulta acima

alter system kill session 'sid, serial#';

Obs: Lembrando que para isso você deverá ter privilégios

3. Encontrar qual o SQL esta causando o bloqueio

select sql_text from v$sqltext where (address,hash_value) in (select sql_address,sql_hash_value from v$session where lockwait is not null) order by address, hash_value, piece

4. Ok, aprendemos a identificar e a eliminar o a sessão que estava realizando o bloqueio em nosso banco de dados e ainda a identificar a consulta/comando que estava executando o bloqueio. Agora vamos simular um caso real:

Primeiros vamos criar uma tabela e popular com alguns registros:

CREATE TABLE TbProduto (NmProduto VARCHAR(100) NOT NULL, VrPreco NUMERIC(10,2) NOT NULL);

INSERT INTO TbProduto (NmProduto, VrPreco) VALUES ('Tenis',100.50);

INSERT INTO TbProduto (NmProduto, VrPreco) VALUES ('Sapato',90.50);

INSERT INTO TbProduto (NmProduto, VrPreco) VALUES ('Chinelo',20.50);

COMMIT;

Agora em uma sessão vamos realizar um aumento no valor dos produtos em R$0.50:

UPDATE TbProduto

   SET VrPreco = VrPreco + 0.50;

3 rows updated

Não vamos commitar.

Abra uma outra sessão e vamos realizar a mesma atualização de valor, simulando uma situação em que 2 pessoas ao mesmo tempo tentou realizar o aumento do preço do produto.

UPDATE TbProduto

   SET VrPreco = VrPreco + 0.50;

Verificamos que nesse caso, não recebemos retorno de alteração dos 3 produtos, pois essa sessão esta esperando o commit da sessão anterior para realizar essa atualização, ou seja, nesse caso temos um DeadLock (onde 2 sessãos estão tentando atualizar os mesmos dados)

Não vamos commitar ainda.

Vamos abrir uma terceira sessão, é agora que vai inciar nossa análise. Primeiro vamos verificar quais as sessões que estão gerando o bloqueio:

select sid, serial#, username, command, lockwait, osuser from v$session where lockwait is not null

SID SERIAL# USERNAME COMMAND LOCKWAIT OSUSER
51 51 SYS 6 BE99CB98 nnh-PC\nnh

 

Vamos testar a consulta para identicar o comando que esta causando o bloqueio:

select sql_text from v$sqltext where (address,hash_value) in (select sql_address,sql_hash_value from v$session where lockwait is not null) order by address, hash_value, piece

SQL_TEXT
UPDATE TbProduto    SET VrPreco = VrPreco + 0.50

 

Agora vamos matar a sessão que esta causando bloqueio;

alter system kill session '51,51';

System altered

Fonte: http://psoug.org/reference/deadlocks.html 

[]s

segunda-feira, 20 de agosto de 2012

Identificar permissões de uma Role – Sql Server

 

Segue consulta:

select dp.NAME AS principal_name,
           dp.type_desc AS principal_type_desc,
           o.NAME AS object_name,
           p.permission_name,
           p.state_desc AS permission_state_desc
   from    sys.database_permissions p
   left    OUTER JOIN sys.all_objects o
   on     p.major_id = o.OBJECT_ID
   inner   JOIN sys.database_principals dp
   on     p.grantee_principal_id = dp.principal_id
order by principal_name

 

[]s

segunda-feira, 13 de agosto de 2012

Qual a diferença entre BLOB x CLOB - Oracle

Um BLOB (binary large object) é um tipo de dados Oracle que pode conter até 4 GB de dados binarios. BLOB são úteis para armazenar informação digital (por exemplo, imagens, áudio, vídeo).

Um CLOB (Character Large objeto) é um tipo de dados Oracle que pode conter até 4 GB de dados. CLOBs são úteis para armazenar texto.

Tipos de dados BLOB e CLOB são criados através da utilização do CREATE TABLE ou ALTER da mesma forma que são criados campos de outros tipos.

Exemplos:

BLOB:

CREATE TABLE DOMINA_BLOB (id NUMBER, doc BLOB);

INSERT INTO DOMINA_BLOB VALUES (1, EMPTY_BLOB());

CLOB:

CREATE TABLE DOMINA_CLOB(id NUMBER, doc CLOB);
INSERT INTO DOMINA_CLOB VALUES (1, 'some CLOB data');
[]s
 

Qual o tamanho da Transaction Log?

 

Podemos observar o tamanho do Transaction Log, em MB, e o quando, em percentual, está sendo utilizado do Transaction Log com o seguinte comando:

DBCC SQLPERF (LOGSPACE)

Exemplo do retorno:

Warnings: --->
  W (1): DBCC execution completed. If DBCC printed error messages, contact your system administrator.
         <---
Database Name                  Log Size (MB)     Log Space Used (%)     Status   
----------------------          ----------------      ---------------------      ---------
master                                    2,9921875         31,723237991333008     0        
tempdb                                1363,0546875      21,62744903564453      0        
msdb                                     42,9921875        16,172996520996094     0        
  

3 record(s) selected [Fetch MetaData: 15/ms] [Fetch Data: 47/ms]

[Executed: 13/08/12 10h32min44s BRT ] [Execution: 110/ms]

 

[]s

sexta-feira, 10 de agosto de 2012

Conceito do banco de dados NoSQL

NoSQL é um termo utilizado para definir um tipo de banco de dados que não segue normas de tabelas (schemas) determinadas previamente. Seu significado é (Not only SQL - Não só SQL) e vem do conceito de que o banco de dados não necessita de normalização e relacionamentos.

A computação na nuvem , análises sociais, performance na consulta/escrita, replicação e a necessidade cada vez maior de prover serviços escaláveis, estão fazendo com que sejam pensadas em soluções onde se necessitem oferecer escalabilidade horizontal. Bancos de dados NoSQL armazenam os dados com técnicas que visam atender a essa necessidade.

O NoSQL surgiu dessa necessidade, ou seja, oferecer performance superior e de uma alta escalabilidade. Os bancos de dados relacionais existentes atualmente, possuem restrições a isso, sendo necessária a distribuição vertical de servidores, ou seja, quanto mais dados, mais memória e mais disco. O NoSQL oferece a facilidade na distribuição horizontal, que em resumo é, mais dados, mais servidores, não necessariamente de alta performance. Um grande utilizador desse conceito é o Google, que usa computadores de pequeno e médio porte para a distribuição dos dados sendo essa forma muito mais eficiente e econômica.

No entanto, o banco de dados NoSQL não têm como objetivo substituir os bancos de dados relacionais, mas apenas propor algumas soluções que em determinados cenários são mais adequadas ou quanto as ferramentas de banco de dados tradicionais não são suficientes ou adequados às necessidades específicas, tais como: baixa latência, grandes volumes de dados, escalabilidade ou estruturas em que as conexões entre os dados são tão importantes quanto o próprio dado.

NoSql é um banco de dados não normalizado, que se refere ao banco de dados não seguir uma estrutura de colunas, chaves e tipos definidos previamente. No caso dos bancos NoSQL, toda a a informação necessária estará agrupada no mesmo registro, ou seja, em vez de você ter o relacionamento entre várias tabelas para formar uma informação, ela estará em sua totalidade no mesmo registro.

Tipos de banco de dados NoSql

  • Key/Value Store - Esse é o tipo de banco de dados NoSQL fornecem uma chave eficiente para mapear os valores existentes, o conceito dele é uma chave e um valor para essa chave. Ele é o que aguenta mais carga de dados. Esses tipos de bancos de dados são o que tem a maior escalabilidade.
  • Wide Columns Store - Estes são também chamados de bancos de dados orientados a registro. Similar aos bancos de dados relacionais, é um banco de dados grande constituído por várias tabelas, cada uma contendo um conjunto de linhas endereçáveis. Cada linha consiste de um conjunto de valores que são considerados colunas. Fortemente inspirados pelo BigTable, do Google, eles suportam várias linhas e colunas, além de permitir subcolunas.
  • Document Store - Esses bancos de dados se concentram em armazenamento e acesso otimizado em documentos em vez de linhas ou registros, são Baseado em documentos XML ou JSON, podem ser localizados pelo seu id único ou por qualquer registro que tenha no documento. Alguns bancos de dados de documentos fornecem RDBMS.
  • Graph Store - Com uma complexibilidade maior, esses bancos de dados guardam objetos, e não registros como os outros tipos de NoSQL. A busca desses itens é feita pela navegação desses objetos.Além disso, eles enfatizam alto desempenho para acesso a dados associativo, evitando a necessidade de junção.Uma característica que o Graph DBs possuem é a capacidade de um valor do campo armazenar o ID de outra entidade.
  • Column Oriented Store - Esses são bancos de dados relacionais, porém apresentam características do NoSQL. A principal diferença deles é que os dados são armazenados em colunas, ajudando na escalabilidade.

Fontes: http://imasters.com.br - http://www.devmedia.com.br - http://www.fxplabs.com.br - http://www.nosqlbr.com.br

[]s

quarta-feira, 8 de agosto de 2012

Etapas da mineração de Dados

  1. Entender o problema – fase inicial do projeto, tem como objetivo principal identificar as metas através da analise da problemática
  2. Entender e identificar os dados – Nesta fase temos a extração de dados e análise
  3. Preparação ou transformação dos dados – Criação de processos de extração, limpeza e transformação dos dados para utilização dos algoritmos de mineração de dados
  4. Modelagem do problema – seleção dos algoritmos a serem utilizadas para o processamento das informações. Alguns algoritmos necessitam de um formato especializado do dados o que pode ocorrer o retorna para fase anteriores para que o processo de extração ou transformação sejam adaptados.
  5. Avaliação do Modelo – Avaliar os modelos gerados com a visão do problema validando as regras ou possíveis falhas.
  6. Publicação do Modelo – Tornar a informação acessível para tomada de decisão através de uma ferramenta específica ou até mesmo um relatório.

[]s

segunda-feira, 30 de julho de 2012

Instruções SET (Transact-SQL) – para Datas

SET DATEFIRST

Define o primeiro dia da semana como um número de 1 a 7.
Sintaxe
SET DATEFIRST { number | @number_var } 

É um inteiro que indica o primeiro dia da semana. Pode ser um dos seguintes valores. 
 

ValorO primeiro dia da semana é
1Segunda-feira
2Terça-feira
3Quarta-feira
4Quinta-feira
5Sexta-feira
6Sábado
7 (padrão, EUA Inglês)Domingo

Para visualizar a configuração atual de SET DATEFIRST, use a função @@DATEFIRST.

A configuração de SET DATEFIRST é definida no momento da execução e não no momento da análise.
Exemplos:
-- SET DATEFIRST to U.S. English default value of 7.
SET DATEFIRST 7;
SELECT CAST('1999-1-1' AS datetime2) AS SelectDate,DATEPART(dw, '1999-1-1') AS DayOfWeek;
SET DATEFIRST 3;
SELECT CAST('1999-1-1' AS datetime2) AS SelectDate ,DATEPART(dw, '1999-1-1') AS DayOfWeek;
GO



SET DATEFORMAT


Define a ordem das partes do mês, dia e ano para interpretar date, smalldatetime, datetime, datetime2 e cadeias de caracteres datetimeoffset.
Sintaxe
SET DATEFORMAT { format | @format_var } 

É a ordem das partes de data. Parâmetros válidos são mdy, dmy, ymd, ydm, myde dym. Este argumento ou pode ser Unicode ou conjuntos de caracteres de dois bytes (DBCS) convertidos para Unicode. O padrão do inglês dos EUA é mdy.

Exemplos:
-- Set date format to day/month/year.
SET DATEFORMAT dmy;
GO
DECLARE @datevar datetime2 = '31/12/2008 09:01:01.1234567';
SELECT @datevar;
GO
-- Result: 2008-12-31 09:01:01.123
SET DATEFORMAT dmy;
GO
DECLARE @datevar datetime2 = '12/31/2008 09:01:01.1234567';
SELECT @datevar;
GO
-- Result: Msg 241: Conversion failed when converting date and/or time -- from character string.

GO

Fonte: http://msdn.microsoft.com/pt-br/library/ms190356.aspx

quinta-feira, 26 de julho de 2012

Recomendação de Indíce por número de valores exclusivos – Sybase IQ

No Sybase IQ, os índices são otimizados de acordo com o número de valores destintos que se interagem. Quando este número chega a certos níveis, a escolha do índices deve ser realizada de acordo com as recomendações contidas a seguir:

Número de valores exclusivos

Tipo índice recomendado

Abaixo de 1.000

LF (HG Se a tabela tem <25.000 linhas)

1000 ou mais

HG e/ou HNG

Aqui estão alguns exemplos de colunas com diferentes números de valores exclusivos:

  • Colunas que armazenam o estado civil tem apenas alguns valores exclusivos (solteiro, casado, NULL)
  • Colunas que armazenam nomes de estado ou Cidade tem menos de 100 valores exclusivos
  • Colunas que armazenam dados de data, provavelmente, tem mais de 100 mas menos de 65536 valores exclusivo
  • Colunas que armazenam números de conta e números de segurança social podem ter milhares ou milhões de números únicos

[]s

segunda-feira, 23 de julho de 2012

Oracle apresenta o Oracle Enterprise Manager 12c

Solução ampliada de gestão de TI voltada aos negócios com recursos exclusivos de cloud computing

A Oracle anunciou o Oracle Enterprise Manager 12c, a primeira solução do setor a combinar gestão da pilha completa da Oracle com gerenciamento de todo o ciclo de vida de nuvem empresarial.

Agora as organizações de TI podem aumentar a eficiência ao mesmo tempo que reduzem os custos e a complexidade dos datacenters tradicionais, de ambientes virtualizados e de cloud computing.

Com o Oracle Enterprise Manager Cloud Control, o novo console centralizado, o Oracle Enterprise Manager 12c reúne recursos de gestão exclusivos para todo o ciclo de vida da nuvem. As principais novidades incluem planejamento de capacidade e consolidação, auto-atendimento, testes, monitoramento, medição e chargeback (estorno).

Os novos recursos de gestão integrados – dos aplicativos ao disco rígido – do Oracle Fusion Applications e dos sistemas projetados da Oracle foram adicionados. Essa versão apresenta também novas capacidades de gerenciamento de recursos de cloud computing e virtualização com base no Oracle VM 3.0.

Inclui também novos recursos aprimorados de parceiros, disponíveis por intermédio do programa Oracle PartnerNetwork, e de gerenciamento de componentes de outros fornecedores.

O Oracle Enterprise Manager 12c é o primeiro produto do portfóio da Oracle com o número "12c" – a letra "c" indica investimentos expressivos da Oracle para oferecer produtos prontos para nuvem.

Gestão de cloud computing completa e unificada por meio de um único console

O Oracle Enterprise Manager Cloud Control é o único console de gestão de cloud computing para tecnologia Oracle que permite aos stakeholders criar serviços empresariais avançados, compostos por uma combinação de IaaS (infraestrutura como serviço), PaaS (plataforma como serviço) – incluindo DBaaS (banco de dados como serviço) e MWaaS (middleware como serviço) – e SaaS (software como serviço).

O Oracle Enterprise Manager Cloud Control fornece recursos orientados por assistentes e baseados em funções para todos os stakeholders envolvidos no planejamento, gestão e consumo de cloud computing empresarial.

Os principais recursos incluem:

  • Ferramentas de planejamento na nuvem, que permitem aos arquitetos e administradores da nuvem modelar o ambiente de cloud computing para maximizar a utilização dos recursos. Um recurso importante – o planejador de consolidação e capacidades – facilita a ambientação na nuvem por meio de recomendações e workflows automatizados.
  • Configuração automática de recursos do sistema e pools compartilhados, que possibilitam aos administradores da nuvem reunir recursos de TI e definir regras, privilégios e políticas que regem como os recursos são consumidos, além de ajudar a garantir a facilidade na gestão e a qualidade do serviço.
  • Auto-atendimento incorporado, com acesso transparente aos recursos de cloud computing para os usuários de linhas de negócios e desenvolvedores de aplicativos. Os consumidores podem usar o portal de autoatendimento para solicitar serviços de um catálogo central, gerenciar e monitorar os serviços solicitados, assim como receber informações de chargeback.
  • Chargeback e indicadores completos, para que os funcionários de finanças, gerentes de TI e prestadores de serviços façam medições do uso e cobrem pelos serviços. Vários mecanismos de chargeback disponíveis. Integrações embutidas com o Oracle Communications Billing and Revenue Management oferecem vastos recursos de faturamento.
  • Capacidades exclusivas de cloud computing agregam vantagens inéditas no setor por intermédio de integrações com dois importantes produtos Oracle:
    • Oracle VM 3.0, que permite aos administradores planejar e provisionar automaticamente ambientes de cloud computing, incorporando VMs, zonas e pools de recursos.
    • Oracle Virtual Assembly Builder: ajuda os desenvolvedores a modelar e empacotar aplicativos complexos, multicamadas, para consumo em auto-atendimento.
  • Diferentemente das soluções da concorrência o Oracle Enterprise Manager 12c garante a gestão da nuvem em ambientes físicos e virtuais para arquiteturas x86 e4 SPARC.
Projetado para Oracle

O Oracle Enterprise Manager 12c continua a oferecer incomparáveis recursos de automação para tecnologias Oracle. Os destaques incluem:

  • Gestão completa do Oracle Fusion Applications, que fornece recursos inigualáveis para ajudar a garantir a integridade e a disponibilidade desses aplicativos.
  • Disponibilidade imediata para suporte do programa Applications Unlimited da Oracle. Agora as suites de gestão Oracle JD Edwards EnterpriseOne e Oracle Siebel CRM estão certificadas. Há certificações de outros aplicativos planejadas para 2012.
  • Gestão aprimorada do Oracle Fusion Middleware com novos recursos de autogerenciamento, como análise automática de causa principal e recomendações pró-ativas. Desse modo, os administradores de aplicativos e TI gerenciam mais programas com facilidade.
  • Autogerenciamento de banco de dados avançado, que permite aos DBAs gerenciar bancos de dados de grande porte com recursos que incluem monitor automático de diagnósticos periódicos e em tempo real do banco de dados, assim como análises de ASH (Active Session History).
  • Soluções aprimoradas de gestão de qualidade com novos recursos Application Replay, que viabilizam testes de cargas de trabalho reais dos aplicativos, proporcionando resultados mais realistas. A nova capacidade de descoberta, modelagem e subdivisão de dados racionaliza a gestão dos dados dos testes. Juntos, esses recursos contribuem para aprimorar a qualidade dos aplicativos com menos esforço.
  • Integração coesa com os sistemas projetados da Oracle, que possibilitam visualizações integradas de hardware e software para o Oracle Exadata Database Machine e o Oracle Exalogic Elastic Cloud, que facilitam a gestão e proporcionam desempenho e disponibilidade superiores.

Fonte:http://www.oracle.com/br/corporate/press/pr-br-06-dec-2011-1396300-ptb.html

[]s

sexta-feira, 20 de julho de 2012

TRUNCATE Table x DELETE Table

Fazendo uma comparação entre a instrução DELETE e TRUNCATE temos as seguintes vantagens:

  • Menos espaço transaction log usado. A instrução DELETE remove as linhas uma de cada vez e registra uma entrada no transaction log para cada linha excluída. TRUNCATE TABLE remove os dados desalocando as páginas de dados usadas para armazenar os dados da tabela e registra somente os desalocações página no transaction log.
  • Menos bloqueios. Quando a instrução DELETE é executado cada linha que esta contemplada na instrução de delete da tabela está bloqueada até o final para exclusão. TRUNCATE TABLE sempre bloqueia a tabela e página, mas não cada linha.
  • Sem excepção, páginas zeradas são deixadas na tabela. Depois de uma instrução DELETE é executado, a tabela ainda pode conter páginas vazias. Se a operação de exclusão não usar um bloqueio de tabela, a tabela (heap) conterá muitas páginas vazias. Para os índices, a operação de exclusão pode deixar páginas vazias tbm, embora essas páginas serão desalocada rapidamente por um processo de limpeza em segundo plano.


TRUNCATE TABLE remove todas as linhas de uma tabela, mas a estrutura da tabela e suas colunas, restrições, índices, e assim por diante permanecem. Para remover a definição da tabela, além de seus dados, use o comando DROP TABLE.


Se a tabela contiver uma coluna de identity, o contador para essa coluna é redefinido para o valor default informação na criação do identity. Se não tiver sido definido um valor default de inicio, o valor padrão 1 é usado. Para reter o contador de Identity, utilize DELETE.

Restrições:

Você não pode usar TRUNCATE TABLE em tabelas que:

  • Possuem uma FOREIGN KEY. (Você pode truncar uma tabela que tem uma chave estrangeira que faz referência em si.)
  • Participe de uma indexed view.
  • Uso de replicação transacional ou merge replication.

Para tabelas com uma ou mais dessas características, use a instrução DELETE .
TRUNCATE TABLE não pode ativar uma trigger porque a operação não registra exclusões de linha individuais.

[]s

quinta-feira, 19 de julho de 2012

Data Mining - Processo de descoberto do conhecimento - KDD

 

O número de dados armazenadas nas empresas vem aumentando a cada dia o que supera as habilidades humanas em analisa-los e interpreta-los, sendo necessário à utilização de ferramentas e técnicas para automatizar e analisar a massa de dados de forma rápida e inteligente (FAYYAD, 1996).

Essas técnicas e ferramentas que buscam transformar esses dados armazenados em conhecimento, são o objetivo do Knowledge Discovery in Databases - KDD (descoberta de conhecimento em bases de dados).

Segundo FAYYAD (1996), KDD foi criado em 1989 com o intuito de encontrar conhecimento em dados e dar ênfase a uma grande aplicação em particular o método de mineração de dados.

Em resumo segundo (FAYYAD, 1996) o processo de encontrar e interpretar modelos extraídos de uma massa de dados é chamado de KDD envolvendo repetidas aplicações específicas de métodos ou algoritmos Data Mining e a interpretação dos padrões gerados.

O processo de descoberta, ou seja, KDD envolve áreas como estatística, matemática, banco de dados, inteligência artificial, visualização de dados e reconhecimento de padrões todos com um único objetivo de extrair conhecimento a partir de grandes bases de dados.

O processo de KDD é divido em cinco etapas (MANNILA, 1996).:

  • Seleção dos dados - selecionar e coletar o conjunto de dados

  • Pré-processamento e limpeza dos dados – resolver inconsistências dos dados

  • Transformação dos dados – integrar e organizar dados coletados de diferentes fontes

  • Data Mining – Mineração dos dados extraídos

  • Interpretação e Avaliação dos resultados – Processo de descoberta do conhecimento devendo possibilitar o retorno para qualquer uma das fases anteriores caso os resultados não estejam plenamente consistentes.

Principais áreas de conhecimento do KDD:

  • Aprendizado de Máquina – utilização de estratégias de aprendizado de máquina e modelos cognitivos para aquisição automática de conhecimento

  • Bases de Dados – Utilização de técnicas e pesquisas com o objeto de melhorar e aprimorar a exploração das características dos dados.

  • Estatística e Matemática – Utilização de modelos matemáticos ou estatísticos para criação e identificação de padrões e regras entre os dados.

  • Sistemas Especialistas – são programas de computadores de inteligência artificial, ou seja, soluções criadas em linguagem de máquina para resolver problemas do mundo real.

  • Visualização de Dados – Descoberta da informação, ou seja, análise do resultado final que pode ser demonstrado em forma de gráficos, figuras e ícones.

Desta forma a mineração de dados utilizando KDD é a combinação de diferentes técnicas.

[]s

terça-feira, 17 de julho de 2012

Consumo de CPU – SQL Server

 

Retorna as 10 consultas com maior consumo de CPU:

SELECT TOP 10 total_worker_time/execution_count AS [Avg CPU Time],
Plan_handle, query_plan
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_text_query_plan(qs.plan_handle, 0, -1)
ORDER BY total_worker_time/execution_count DESC;

[]s

sábado, 14 de julho de 2012

Introdução a Data mining

Um diferencial competitivo é quando a empresa torna-se capaz de criar modelos de mineração de dados, ou seja, baseado em um histórico de dados encontra tendências ou padrões de comportamento de forma inteligente.

Empresas armazenam em seus bancos de dados diversas informações e acontecimentos em todos os departamentos, uma empresa financeira, por exemplo, armazenam informações de orçamento, contábil, financeiro, jurídico, clientes entre outros. A função do BI é juntar toda essa informação e consolidar em uma única base de dados para em seguida aplicar a mineração de dados.

Segundo (Fayyad et al. 1996) Data Mining é o processo não trivial de identificar, em dados, padrões válidos, novos, potencialmente úteis e ultimamente compreensíveis.

Conforme Groth (1998) e Han, Chen & Yu (1996) os passos necessários à Data Mining são representados na figura a seguir:

Existem diferentes tipos de métodos para mineração de dados, são elas: Classificação, Modelos de Relacionamento entre Variáveis, Análise de Agrupamento, Sumarização, Modelo de Dependência, Regras de Associação e Análise de Séries Temporais, conforme citação e definição feita por Fayyad et al. (1996a).

A maioria dos métodos são baseados em técnicas de reconhecimento de padrões e estatística, neurais, lógica e algoritmos genéticos.

De acordo com FAYYAD et al. (1996) os métodos tradicionais de Data Mining são:

  • Classificação: associa ou classifica um item a uma ou várias classes categóricas pré-definidas.

  • Modelos de Relacionamento entre Variáveis: associa um item a uma ou mais variáveis de predição de valores reais, consideradas variáveis independentes ou exploratórias.

  • Análise de Agrupamento (Cluster): associa um item a uma ou várias classes categóricas (ou clusters), determinando as classes pelos dados, independentemente da classificação pré-definida.

  • Sumarização: determina uma descrição compacta para um dado subconjunto. As medidas de posição e variabilidade são exemplos simples de sumarização.

  • Modelo de Dependência: descreve dependências significativas entre variáveis. Modelos de dependência existem em dois níveis: estruturado e quantitativo.

  • Regras de Associação: determinam relações entre campos de um banco de dados.

  • Análise de Séries Temporais: determina características sequenciais, como dados com dependência no tempo.

[]s

quinta-feira, 12 de julho de 2012

Introdução a BI

Atualmente, diferentes tipos de empresas, ou seja, empresas de pequeno, médio e grande porte necessitam do BI para auxiliá-las nas mais diferentes situações para a tomada de decisão, otimização dos processos, redução de custo, previsões e planos estratégicos.

O termo Business intelligence não é recente, surgiu na década de 80 no Gartner Group e surgiu da necessidade de cruzar informações para a realização de uma gestão empresarial eficaz. Segundo Howard Dresner, vice-presidente da empresa Gartner e detentor da paternidade do termo, o interesse pelo BI vem crescendo na medida em que seu emprego possibilita às organizações realizar uma série de análises e projeções, de forma a agilizar os processos relacionados às tomadas de decisão.

Para que um projeto de BI seja bem sucedido, deve-se levar em consideração alguns fatores importantes, ou seja, deve ser respeitadas algumas fases a fim de garantir a qualidade final do projeto.

  • Planejamento: Obter conhecimentos dos processos da empresa que irá implantar uma solução BI para entender quais os objetivos do planejamento estratégico do negócio. Em toda a fase do planejamento a participação da área de negócios é essencial.

  • Escolha da ferramenta: Deve-se levar em consideração o custo com a aquisição de ferramentas, pois o pacote de ferramentas não deve comprometer o orçamento do projeto.

  • Extração da informação: Garantir a qualidade da informação através de um processo Extract Transfomation and Load (ETL) que seja eficiente e eficaz.

  • Enriquecimento e tratamento das informações: Garantir que após a extração da informação um processo ETL seja responsável por realizar todo o tratamento, validação e consistência dos dados.

  • Carga do Data Warehouse (DW): Após a extração e tratamento da informação inclusão da massa de dados em um ambiente dimensional

  • Apresentação da informação: Criação de relatórios analíticos que venham atender a necessidade inicial da construção do BI

  • Treinamento dos Usuários: São as peças chaves para o sucesso do BI. Eles devem conhecer e saber como obter a informação de maneira que sejam motivados a utilizar.

[]s

terça-feira, 10 de julho de 2012

Sybase IQ – Tipos de Índice

Quando você carregar dados em uma tabela, o Sybase IQ fisicamente armazena dados por coluna e não por linha. Em um ambiente de data warehousing é de costume olhar atributos específicos de milhares ou milhões de linhas de dados, ao invés de linhas completas.

Além de índices de coluna, o Sybase IQ permite que você crie índice de joins. Join indexes são criados para otimizar consultas entre tabelas.

O conjunto de índices definido para uma determinada coluna pode ter um impacto dramático na velocidade de processamento de consulta. Há quatro principais critérios para a escolha de índices:

• Número de valores exclusivos
• Tipos de consultas
• A utilização de espaço em disco
• Tipos de dados

Lembre-se também que todas as colunas são automaticamente armazenados em uma maneira que facilita projeções rápidas.

Tipos de Índices:

Tipo de Indice Propósito

Comparação (CMP)

Armazena a comparação binária (<,> =, <=,> =, ou NE) de quaisquer duas colunas com tipos idênticos de dados, precisão e escala.

DATE

Um índice em colunas de dados DATE tipo usado para processar consultas que envolvam data.

Datetime (DTTM)

Um índice em colunas de dados DATETIME ou TIMESTAMP tipo usados ​​para processar consultas data e hora.

High_Group (HG)

Um índice B-tree para processar a igualdade e do grupo através de operações sobre dados de alta cardinalidade. (Recomendado para mais de 1.000 valores distintos ou para uma tabela com menos do que 25.000 linhas.)

High_Non_Group (HNG)

Um índice bitmap (não baseado em valor) ideal para a maioria das operações de cardinalidade alta DSS envolvendo intervalos ou agregados.

Low_Fast (LF)

Índice Bitmap baseada em valor para o processamento de consultas sobre cardinalidade baixa de dados. (Recomendado para até 1.000 valores distintos e mais de 25.000 linhas na tabela. Pode suportar até 10.000 valores distintos.)

TIME

Um índice em colunas de dados Time tipo usado para processar consultas que envolvam tempo.

WD

Utilizado para palavras-chave de índice, tratando o conteúdo de um CHAR, VARCHAR, LONG VARCHAR ou coluna como uma lista delimitada.

Join Indexes Índice entre campos chaves utilizados nos joins entre tabelas

Nos próximos posts iremos ver em detalhes cada um dos tipos de índices mencionados acima

Fonte: http://infocenter.sybase.com

[]s

sexta-feira, 29 de junho de 2012

Google Developers Blog: Google Compute Engine: Computing without limits

Google Developers Blog: Google Compute Engine: Computing without limits: By Craig McLuckie, Product Manager, Google Compute Engine Over the years, Google has built some of the most high performing, scalable and...

Sybase IQ – Termos

Catalog store

É a parte de cada banco de dados Sybase IQ que contém seus metadados. (Metadados descreve o layout das tabelas do Sybase IQ, colunas e índices.) contém o dbspace SYSTEM e até 12 outros dbspaces adicionais. O nome padrão para este arquivo é dbname.db.

 

Connection Profile

Um perfil de conexão para armazenar as informações necessárias para estabelecer uma conexão para execução do Sybase IQ Server. O perfil é utilizado principalmente para simplificar as conexões do usuário com o servidor.

 

Dbfile

A dbfile é um arquivo do sistema operacional em uma partição utilizada para armazenar dados para um banco de dados Sybase IQ. Cada dbfile tem um arquivo lógico e o arquivo físico correspondente. O nome dbfile pode ser o mesmo do dbspace. A view SYSDBFILE mostra todos os dbfiles.

 

Dbspace

A dbspace é um é um conjunto lógico de dbfiles. Você pode expandi-lo, adicionando dbspaces adicionais. Os usuários podem mover dados Sybase IQ  de discos e tirar os discos off-line, sem qualquer tempo de inatividade.

 

Free list

A lista livre é uma estrutura que o Sybase IQ usa para controlar quais blocos estão em uso por um dbspace.

 

IQ Database

Um banco de dados que você cria usando um servidor Sybase IQ é chamado de um banco de dados IQ. Bases de dados IQ são especialmente indexados para aproveitar a velocidade de consulta Sybase IQ.

Cada banco de dados de IQ que você crie inclui três stores: IQ principal (para dados), uma catálogo (para metadados), e uma temporária (para dados temporários). Ele também gera um arquivo de mensagem de Log

 

IQ main store

o IQ main Store contém o dbspace IQ_SYSTEM_MAIN e dbspaces de outros usuários. É a parte de cada banco de dados Sybase IQ que contém estruturas de banco de dados persistentes, como metadados de backup de dados e rollback para transações commitadas.
Sybase recomenda que você evite armazenar as tabelas de usuário e índices em IQ_SYSTEM_MAIN e  criar dbspaces adicionais para armazenar as tabelas de usuário e índices.

 

IQ message log

É um arquivo de log de mensagem criado quando o usuário se conecta a um banco de dados IQ. O nome padrão para este arquivo é dbname.iqmsg. Sybase IQ registra mensagens de erro, mensagens de status e mensagens de notificação de inserção neste arquivo.

 

IQ temporary store

IQ temporary store contém o dbspace IQ_SYSTEM_TEMP. É a parte de cada banco de dados que armazena  tabelas temporárias e dados temporários. O servidor de banco de dados usa estruturas de dados temporários para classificar os dados e processos. Dados dessas tabelas persiste apenas enquanto você está conectado ao banco de dados.

 

IQ transaction log

O IQ transction log registra as banco de dados. O log de transações inclui informações sobre a versão, o espaço livre, e outras informações, você pode usar para se recuperar de uma falha do sistema. Por padrão, o log de transações é criado no mesmo diretório como o catalog store. O nome padrão para este dbfile é dbname.log.

 

Join index

Conceitualmente, um índice em um banco de dados é como um índice em um livro. Em um livro, o índice se refere cada termo indexado para a página ou páginas em que essa palavra aparece. Numa base de dados, o índice relaciona cada valor de coluna indexada para a localização física no qual a linha de dados que contêm o valor indexado está armazenado.
Um índice de associação é um tipo especial de índice utilizado no Sybase IQ. Join Index podem melhorar o tempo de resposta para consultas que unem duas ou mais tabelas.

 

Metadata

Metadados são dados que descrevem os dados em seu banco de dados - por exemplo, o tipo e tamanho de dados de cada coluna em uma tabela. Metadados para cada banco de dados Sybase IQ é armazenado no catalog Store.

 

Multiplex

Um poderoso recurso no Sybase IQ que fornece a escalabilidade do aplicativo através de uma configuração de servidor de cluster. Sybase IQ permite multiplex cargas de dados concorrentes e consultas através de processamento de dados independentes conectados a uma fonte de dados compartilhada. Cada servidor multiplex tem seu próprio catalog store e IQ temporary e todos os servidores compartilham o mesmo IQ store.

 

Object

Um objeto pode ser uma tabela, indice,etc. Os objetos são divididos em objetos persistentes, que permanecem no banco de dados mesmo quando o usuário se desconecta ou reinicializa o servidor ou  temporários (exibições que só permanecem no banco de dados durante a sessão atual).

 

Partition Key

A chave de partição é uma coluna de tabela definido pelo criador da tabela que determina como uma tabela deve ser particionado.

 

Proxy table

Uma tabela de proxy é uma tabela que mapeia para uma tabela em um servidor remoto onde atributos e informações de índice são derivadas do objeto no local remoto. Você pode usar tabelas de proxy para pesquisar dados em vários servidores SQL Anywhere, bancos de dados ASE, e bancos de dados não Sybase.

 

Range partition

Uma partição de intervalo é um subconjunto lógico de linhas da tabela com base nos valores de uma única coluna da tabela.

 

SQL Anywhere

SQL Anywhere - processamento de transações e sistema de gerenciamento de banco de dados relacional que pode ser usado independente ou como um servidor de rede em um cliente multi-usuário / servidor ou três camadas.
SQL Anywhere é especificamente projetado para usar menos memória e recursos de disco que o sistema de banco de dados. Sybase IQ é uma extensão do SQL Anywhere, e suporta muitas das mesmas características.

 

Store

Store é um ou mais dbspaces que armazenam dados persistentes ou temporários para um propósito especial. Sybase IQ tem três store: catalog store, IQ main store e IQ temporary store.

 

Synchronize command

O processo de atualização de join index. Você usar a instrução SYNCHRONIZE JOIN INDEX para fazer isso. O administrador do sistema precisa sincronizar os join index periodicamente se vários usuários atualizar tabelas que podem estar envolvidas.

 

Synchronization

Sincronização  multiplex entre servidores até à data.

 

Table Partition

A tabela de partição é uma coleção de linhas que é um subconjunto de uma tabela criada pelo usuário. Uma dada linha não podem ser colocados em duas partições diferentes. Cada partição pode ser colocado na sua própria dbspace e administrado individualmente.

Tablespace

Uma unidade de tabela de armazenamento no interior da base de dados que pode ser administrada como um subconjunto lógico de armazenamento total. Você pode alocar objetos individuais e sub para tablespaces individuais. A tablespace no Sybase IQ é referido como um dbspace.

 

Fonte: http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc00170.1270/html/iqapg/iqapg18.htm

[]s

quinta-feira, 28 de junho de 2012

Duvidas com Join?

Porque os professores da Faculdade não mostraram essa imagem antes….rs

SQLJoin

Oracle 9,10g X Sybase ASE 12,15

Uma instância Oracle consiste em:
A) Seis processos: PMON Process Monitor, SMON System Monitor, DBWn Database Writer, LGWR Log Writer, ARCn Archiver, and CKPT Checkpoint. E processos adicionais em um sistema RAC 10g podendo incluir RECO recuperação de transações distribuídas, CJQn Job cordenador de processo, LCKn bloquei de recursos compartilhado, LMDn Gerente Global de Lock, LMON Lock Manager, LMS * Serviço de Cache Global, MMAN Gerenciador de memória, MMNL Metrics Monitor, Histórico da sessão, métricas computacional, MMON Metrics Monitor, estatísticas, snapshots.

B) Os arquivos de dados que contenham as tabelas e outros objetos de dados,  arquivos de controle que contêm informações de configuração do banco de dados, redo log para processamento de transações e archive files para fins de recuperação.


C) Os arquivos de configuração que contém os atributos de instância, e informações de segurança externa

Um servidor de Sybase consiste em:
A) dois processos, data server e backup server

B) dispositivos que abrigam os bancos de dados, um banco de dados (master) contendo o sistema e dados de configuração;


C) um arquivo de configuração que contém os atributos do servidor.

 

Fonte: http://www.rocket99.com/sybase/syb_vs_ora.html

 

[]s

segunda-feira, 19 de março de 2012

Introdução ao Business Intelligence:Arquitetura de Data WareHouse (DW) e Modelagem Dimensional

 

Modelagem e Utilização de OLAP - On-line Analytical Processing

OLAP

É um conceito de interface com o usuário que proporciona a capacidade de ter idéias sobre os dados, permitindo analisá-los profundamente em diversos ângulos. As funções básicas do OLAP são:

• Visualização multidimensional dos dados;

• Exploração;

• Rotação;

• Vários modos de visualização.

ROLAP (OLAP Relacional):

Os dados são armazenados de forma relacional.

MOLAP (OLAP Multidimensional)

Os dados são armazenados de forma multidimensional.

HOLAP (OLAP Híbrido)

Uma combinação dos métodos ROLAP e MOLAP.

DOLAP (OLAP Desktop)

O conjunto de dados multidimensionais deve ser criado no servidor e transferido para o desktop. Permite portabilidade aos usuários OLAP que não possuem acesso direto ao servidor.

Exploração Navegação com OLAP

Drill Down - Aumento do nível de detalhe da informação e conseqüente diminuição do nível de granularidade.

Drill Up - Diminuição no nível de detalhe e conseqüente aumento do nível de granularidade.

Dice - Mudança de perspectiva da visão multidimensional, como se o cubo fosse girado. Permite descobrir comportamentos e tendências entre os valores das medidas analisadas em diversas perspectivas.

Slice - Corta o cubo, mas mantém a mesma perspectiva de visualização dos dados. Funciona como um filtro que restringe uma dimensão à apenas um ou alguns de seus valores.

Drill Across - O nível de análise dentro de uma mesma dimensão é alterado, ou seja, o usuário avança um nível intermediário dentro de uma mesma dimensão.

Drill Around - Ocorre quando a tabela de fatos que compartilha dimensões em comum não é organizada em uma ordem linear, assim é preciso fazer um drilling em volta do valor.

Drill Through - Ocorre quando o usuário passa de uma informação contida em uma dimensão para uma outra.

Drill Out - É o detalhamento para informações externas como fotos, som, arquivos texto, tabelas.

Drill Within - É o detalhamento através dos atributos de uma dimensão.

Sort - Tem a função de ordenar a informação, podendo ser aplicada a qualquer tipo de informação, não somente a valores numéricos.

Ranking - Permite agrupar resultados por ordem de tamanho, baseado em valores numéricos, refletindo somente na apresentação do resultado e não no resultado em si.

Pivoting - Alternar linhas e colunas, sendo que todos os valores totalizados serão recalculados.

Paging - Apresentação dos resultados de uma consulta em várias páginas, permitindo a navegação do usuário.

Filtering - Apresentação de consultas com restrições sobre atributos ou fatos.

Tiling - Visualização múltipla em uma única tela.

Alerts - Utilizados para indicar situações de destaque em elementos dos relatórios, baseados em condições envolvendo objetos e variáveis.

Break - Permite separar o resultado de uma análise em grupos de informações, permitindo também a subtotalização de valores para cada grupo.

 

[]s

segunda-feira, 27 de fevereiro de 2012

Fazendo leitura de Campo LOB – Oracle

Segue:

select dbms_lob.substr( campo_clob, 4000, 1 ) from tabela;

 

[]s

quinta-feira, 23 de fevereiro de 2012

Introdução ao Business Intelligence:Arquitetura de Data WareHouse (DW) e Modelagem Dimensional

Construindo um Data WareHouse: Modelagem Dimensional

Tabela Fatos

Em resumo, são armazenados medidas, métricas, acontecimentos ou valores

Tabela Fatos – 3 tipos de medidas

· aditivas: são numéricas e são somadas com relação às dimensões existentes, por exemplo: quantidade, valor total dos itens.

· semi-aditivas: são numéricas, mas não podem ser somadas com relação a todas as dimensões, por exemplo: o estoque é totalizado ao longo da produto, porém ao longo das dimensões loja e data não existe o menor sentido está totalização.

· não-aditivas: dados não numéricos, por exemplo: carro1, carro2, carro3.

Tabela Fatos – Tipos de tabelas

Transaction Fact Table

Tipo de tabela de fatos em que a granularidade é uma linha para o menor nível de detalhe capturado por uma transação. Um registro numa TFT está presente somente se um evento de transação ocorre

Periodic Snapshot Fact Table

Um tipo de tabela de fatos que representa desempenho de negócio ao fim de cada período de tempo regular previsível. Snapshots diários e mensais são comuns.

Accumulating Snapshot Fact Table

Tipo de tabela de fato com datas múltiplas representando os principais pontos de controle de um processo ou pipeline relativamente de curta duração. Um

registro é inserido numa tabela de fatos instantâneos acumulados apenas uma vez,

quando o item que representa é inicialmente criado.

Tipos de Modelos Dimensionais

- O Modelo Estrela (Star Schema)

No modelo estrela todas as tabelas relacionam-se diretamente com a tabela de fatos, sendo assim as tabelas dimensionais devem conter todas as descrições que são necessária para definir uma classe, exemplo:

clip_image001

Este modelo é chamado de estrela porque a tabela de fatos fica ao centro cercada das tabelas dimensionais com o formato parecido de uma estrela. Mas o ponto forte a fixar é que as dimensões não são normalizadas.

- O Modelo Floco de Neve (Snow Flake)

No modelo Floco as tabelas dimensionais relacionam-se com a tabela de fatos, mas algumas dimensões relacionam-se apenas entre elas visando diminuir o espaço ocupado por estas tabelas. Exemplo:

clip_image002

Granularidade

Nível de detalhe da informação

Surrogate Key:

Número inteiro seqüencial. No caso das Datas, pode ser usado ou não. Em datas pode-se usar, por exemplo, o tipo date ou um numérico representando a data como YYYYMMDD, por exemplo. Utilizado para unir as dimensões às tabelas de Fatos.

Business Key

Pode ter vários atributos (chave composta) identifica o registro do sistema de origem e não se relaciona com a fato

Tabela Dimensão

descrições, características, localidade, detalhamento.

Tabela Dimensão – tipos de tabelas

  • Simples – Apenas descritiva
  • Hierárquica – Os atributos podem compor uma hierarquia

Slow-change dimension

Dificilmente sofre alterações no decorrer do tempo, exemplo estado civil

Junk Dimension

Uma dimensão abstrata com a decodificação de um grupo de flags e indicadores de baixa cardinalidade, portanto removendo os flags da tabela de fatos.

Degenerated Dimension

Uma chave de dimensão, como o número de uma transação, número de fatura, de tíquete, que não tenha nenhum atributo, portanto não se junta com uma tabela de dimensão.

Bridge Table

Uma tabela com uma chave multiparte capturando um relacionamento muitos-para muitos. Serve como uma ponte entre a tabela de fatos e a tabela de dimensão

de forma a permitir dimensões multivaloradas ou hierarquias

Centipede Fact Table

Uma tabela de fatos com muitas dimensões (mais do que 20) levando a uma esquema que lembra uma centopéia. Centopéias tipicamente resultam

quando projetistas tentam representar relacionamentos hierárquicos com uma

proliferação de dimensões separadas ao invés de aninhá-las numa única dimensão.

Quatro passos para criar um modelo dimensional

  1. Selecionar o processo de negócio que será modelado
  2. Definir grau de granularidade
  3. Definir as dimensões para cada linha do fato
  4. Identificar os fatos numéricos para cada linha do fato

[]s

quarta-feira, 15 de fevereiro de 2012

Retornando o valor do IDENTITY – Sql Server

O Identity funciona como a Sequence no Oracle, uma vez indicado para a coluna de uma tabela que ela é identity ao inserir registros nessa tabela automaticamente iniciara o funcionamento da sequence.

Vamos aos exemplos:

Primeiro criaremos a tabela TbNotaFiscal onde o campo de código da nota fiscal será identity:

Create table TbNotaFiscal (
CdNotaFiscal int not null identity,
VrTotal numeric(10,4) null)

go

Agora vamos incluir uma nota fiscal:

insert into TbNotaFiscal  (VrTotal) values (10.20)
go

1 record(s) affected

Perceba que no insert acima não foi passado o código da Nota Fiscal, o mesmo foi gerado automaticamente:

Select * from TbNotaFiscal

CdNotaFiscal     VrTotal   
-----------------         ----------
1                         10,2
    

Agora como podemos indentificar a posição atual da sequence ou último valor corrente. No Oracle podemos facilmente identicar através de consulta na sessão( select Nome_Sequence.currval from dual) mas e no Sql Server?

Temos 3 maneiras de indentificar qual foi o último identity adicionado na tabela, vamos exemplificar:

@@IDENTITY

Sua função é retornar o ultimo identity inserido em qualquer tabela do bloco em execução.

insert into TbNotaFiscal values (50)
go
Select @@identity
go
select * from TbNotaFiscal
go

1 record(s) affected

column1   
----------
2          Após ter inserido o registro mostra qual o último identity

1 record(s) selected [Fetch MetaData: 0/ms] [Fetch Data: 16/ms]

CdNotaFiscal     VrTotal   
---------------         ----------
1                     10,2      
2                     50
        

2 record(s) selected [Fetch MetaData: 0/ms] [Fetch Data: 0/ms]

Ainda no exemplo @@Identity, e se a tabela TbNotaFiscal tivesse uma trigger que insere em uma tabela de Log o nome do usuário que criou essa Nota Fiscal. Se essa tabela de Log também possuir um campo indentity, qual seria o valor retornado para @@Identity? Vamos lá.

Primeiro criaremos a tabela de Log:

Create Table TbNotaFiscalLog (
CdNotaFiscal int not null identity,
VrTotal numeric(10,4) null,
NmUsuario varchar(100) null)

Agora vamos criar a Trigger:

CREATE TRIGGER trg_NotaFiscalLog
ON TbNotaFiscal
AFTER INSERT
AS
    INSERT INTO TbNotaFiscalLog (VrTotal, NmUsuario)
    SELECT VrTotal, USER_NAME()
    FROM INSERTED

Vamos agora inserir um registro na tabela de Nota Fiscal e ver qual o valor retornado em @@Identity:

insert into TbNotaFiscal values (100)
go
Select @@identity
go
Select * from TbNotaFiscal
go

1 record(s) affected

1 record(s) affected

column1   
----------
1          Veja que o valor retornado foi o da tabela TbNotaFiscalLog -  executado pela trigger

1 record(s) selected [Fetch MetaData: 0/ms] [Fetch Data: 0/ms]

CdNotaFiscal     VrTotal   
---------------          ----------
1                      10,2      
2                      50        
3                     100       

3 record(s) selected [Fetch MetaData: 0/ms] [Fetch Data: 0/ms]

 

SCOPE_IDENTITY()

Retorna o último identity do bloco atual que esta em evidência, ou seja, utilizando nosso mesmo exemplo ao inserir um registro na tabela TbNotaFiscal não seria mais apresentado o identity gerado no insert da trigger e sim do bloco atual e execução. Exemplos:

insert into TbNotaFiscal values (200)
go
Select scope_identity()
go
Select * from TbNotaFiscal
go

1 record(s) affected

1 record(s) affected

column1   
----------
4         Veja que agora o valor apresentado foi o da tabela TbNotaFiscal e não mais o gerado na trigger pela tabela de Log

1 record(s) selected [Fetch MetaData: 0/ms] [Fetch Data: 0/ms]

CdNotaFiscal     VrTotal   
---------------           ----------
1                       10,2      
2                       50        
3                      100       
4                      200
       

4 record(s) selected [Fetch MetaData: 0/ms] [Fetch Data: 0/ms]

 

IDENT_CURRENT()

Permite passar como parametro o nome da tabela retornando o último valor de indentity para a ela. Exemplo:

insert into TbNotaFiscal values (300)
go
Select ident_current('TbNotaFiscal')
go
select ident_current('TbNotaFiscalLog')
go
Select * from TbNotaFiscal
go
select * from TbNotaFiscalLog
go

1 record(s) affected

1 record(s) affected

column1   
----------
5          Identity da tabela TbNotaFiscal

1 record(s) selected [Fetch MetaData: 0/ms] [Fetch Data: 0/ms]

column1   
----------
3          Identity da tabela TbNotaFiscalLog

1 record(s) selected [Fetch MetaData: 0/ms] [Fetch Data: 0/ms]

CdNotaFiscal     VrTotal   
---------------          ----------
1                      10,2      
2                      50        
3                     100       
4                     200       
5                     300       

5 record(s) selected [Fetch MetaData: 0/ms] [Fetch Data: 0/ms]

CdNotaFiscal     VrTotal     NmUsuario   
---------------           ----------      ------------
1                       100           TESTE       
2                       200           TESTE   
3                       300           TESTE
    

3 record(s) selected [Fetch MetaData: 0/ms] [Fetch Data: 0/ms]

É isso ai….

[]s

terça-feira, 14 de fevereiro de 2012

Diferença entre NOLOCK e WITH (NOLOCK)

 

A hint “nolock” utilizadas em consulta, permite que seja realizado a leitura suja das informações, ou seja, permite a leitura de dados de uma transação que ainda não foi efetuado Commit/Rollback.

O ‘WITH’ logo depois o nome da tabela é recomendada, mas opcional:

CORRETO

SELECT * FROM TBNOTAFISCAL WITH (NOLOCK)   

CORRETO

SELECT * FROM TBNOTAFISCAL (NOLOCK)  

A partir do SQL Server 2005, a sintaxe do NOLOCK passou a exigir o uso do ‘WITH’ quando se é utilizado multiplos hins na consulta, no exemplo a seguir é utilizado o hint NOLOCK junto com um hint que força a utilização de um indice.

ERRADO

SELECT * FROM TBNOTAFISCAL (INDEX=INDNF, NOLOCK) 

Incorrect syntax near 'INDEX'. If this is intended as a part of a table hint, A WITH keyword and parenthesis are now required. See SQL Server Books Online for proper syntax.

CORRETO

SELECT * FROM TBNOTAFISCAL WITH (INDEX=INDNF, NOLOCK) 

ERRADO

SELECT * FROM TBNOTAFISCAL NOLOCK

No exemplo acimo não será utilizado o hint NOLOCK e sim criado um alias para a tabela

Segue um Video com exemplos de utilização do NOLOCK

segunda-feira, 13 de fevereiro de 2012

Consulta retorna CPF formatado - Oracle

Segue consulta para retornar CPF no formato padrão:

select regexp_replace('29820131855', '^(\d{3})(\d{3})(\d{3})(\d{2})$', '\1.\2.\3-\4') CPF from dual

CPF

298.201.318-55

[]s

quinta-feira, 9 de fevereiro de 2012

Retorna última string do texto - Oracle

 

select substr('Fabio Martinez',instr('Fabio Martinez',' ',-1)+1) ultima from dual;

ULTIMA

Martinez

      

[]s