Skip to content

Super fast database designed for bigdata that uses processing mechanisms like CPU, GPU and Hybrid.

License

Notifications You must be signed in to change notification settings

grilo88/SuperFastDB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SuperFastDB

English (Inglês)

Super fast database designed for bigdata that uses processing mechanisms like CPU, GPU and Hybrid.

Portuguese-Brazilian (Português-Brasileiro)

Banco de dados super rápido projetado para bigdata que utiliza mecanismos de processamentos como CPU, GPU e Híbrido.

Este projeto é um protótipo, ou seja, um conceito daquilo que servirá de base para transformá-lo em uma versão beta. No entanto, o objetivo é lançar este simplificado conceito com recursos extremamente limitados para não tardar o seu lançamento.

O contribuidor deve ter em mente que este projeto é altamente baseado em processamento paralelo devido as implementações futuras que temos em mente com processadores gráficos, a GPU, mas que também possa ser configurado para trabalhar em modo sequencial definido por um arquivo de configuração.

Tendo em mente que nosso objetivo é o processamento de dados em massa, bigdata, é proibido:

  • O uso de técnicas recursivas devido o péssimo desempenho e alto consumo de memória feitas por alocação em pilhas (stack). O processamento sequencial, linha por linha, é indiscutivelmente mais rápido.
  • O uso excessivo de métodos também deve ser reconsiderado pois afeta o desempenho, salvo quando não há alternativa.

Para atingirmos o melhor desempenho e estar sempre a frente de outros bancos de dados é necessário:

  • Ter uma mentalidade voltada para a programação estruturada do que orientada a objetos, apesar de fazermos o uso dos dois paradigmas, deixando a orientada a objetos sempre em último caso quando não há alternativas.
  • Sempre enxugar os bits, mantendo ou melhorando o alto desempenho.

Para tornar fácil o entendimento do código escrito e colaborar com os demais contribuidores, para que possam dar continuidade às implementações sem dificuldades, documente todos os seus métodos, funções e cada linha do seu código, mesmo que você considere ser evidentemente fácil de entender.

O que é preciso ser feito?

Neste protótipo deverá ser codificado as seguintes solicitações SQL:

CREATE DATABASE [NovoBanco];
DELETE DATABASE [NovoBanco];
USE [NomeDoBanco];

CREATE TABLE [NovaTabela]([Coluna1] NovoTipo, [Coluna2] NovoTipo);
DELETE TABLE [Tabela];
TRUNCATE TABLE [Banco].[Tabela];

INSERT INTO [Tabela] VALUES ([valor1], [valor2]), ([valor1], [valor2]);

SELECT [Expressão];
SELECT [Expressão] AS [NomeColunaResultado];
SELECT [Expressão] FROM [Banco].[Tabela];
SELECT [Expressão] FROM [Banco].[Tabela] WHERE [Expressão];
SELECT Coluna1, Max(Coluna2) FROM [Banco].[Tabela] WHERE [Expressão] GROUP BY Coluna1

Onde [Expressão], de modo geral, deverá ter a capacidade de realizar operações aritméticas, condicionais, atribuições e comparações, respeitando a precedência dos operadores praticadas pelos mecanismos de bancos de dados.

Expressão

Artigos de estudo relacionados à expressão:

Expressão na Computação

Atribuição na Computação

Associatividade de operadores

Operador Lógico

IBM: Operadores e Expressões

Operador Ternário

Operadores unários são operadores que trabalham apenas com um valor ao seu lado direito, por exemplo: --1. Temos um operador unário - e um número -1 do lado direito, isto resultará em um jogo de sinais: (-) com (-1) é igual a 1.

Operadores Aritméticos Unários

Operador unário de negação é usado par inverter resultado de um valor booleano. Ex.: !(1 = 1) o resultado será false:

Operador Unário de Negação

Operadores Sobrecarregáveis

Precedência de Operadores do MySql

Precedência de Operadores do Sql Server 2017

Notação Polonesa Inversa (ou RPN na sigla em inglês, de Reverse Polish Notation);

Converter de Notação infixa para Notação pós-fixa

Pilhas e o cálculo do valor de uma expressão posfixa

Calculadora RPN em C#

Calculadora RPN OnLine

Exemplo C# Calculadora RPN

Como funciona?

A calculadora RPN irá avaliar a [Expressão] considerando a presença de: variáveis '@var' no escopo do comando sql, strings e números escritos entre aspas, números inteiros e decimais, operadores de precedência e funções.

Site para fazer testes de expressão matemática

Exemplo 1: 
SELECT 1 + 2 - 4 * 3; # Deverá retornar o valor -9

Exemplo 2:
SET @num = 23;
SELECT 1 + 2 - 4 + @num; # Deverá retornar o valor 25

Exemplo 3:
SELECT 1 + 2 - 4 = 3; # Deverá retornar os números 0 ou 1 (True ou False)

A [Expressão] deverá permitir uso de funções de string, numéricos, Data e Hora, Conversão e Fluxo de Controle como mostra a seguir:

Funções de String

São usados em todas as expressões avaliadas pela calculadora RPN. Tanto na instrução Select quanto na cláusula Where.

CONCAT(string1,string2,...)
INSERT(string,posicao,comprimento,nova_string)
LEFT(string,comprimento)
LTRIM(string)
REPLACE(string,de_str,para_str)
RIGTH(string,comprimento)
TRIM(string)
UCASE(string) e LOWER(string)
UPPER(string)
RTRIM(string)
SUBSTRING (expressão,pos_inicio,comprimento)  
Funções Numéricas

São usados em todas as expressões avaliadas pela calculadora RPN. Tanto na instrução Select quanto na cláusula Where.

ABS(número)
ACOS(número)
ASIN(número)
ATAN(número)
COS(número)
COT(número)
MOD(dividendo,divisor)
SIN(número)
SQRT(número)
TAN(número)
Funções de Data e Hora

São usados em todas as expressões avaliadas pela calculadora RPN. Tanto na instrução Select quanto na cláusula Where.

TIME()
DATE()
DAY()
MONTH(data)
YEAR(data)
HOUR(hora)
MINUTE(hora)
SECOND(hora)
Funções de Conversão

São usados em todas as expressões avaliadas pela calculadora RPN. Tanto na instrução Select quanto na cláusula Where.

CAST(valor AS novo_tipo)
CONVERT(valor, novo_tipo)
Funções de Fluxo de Controle

São usados em todas as expressões avaliadas pela calculadora RPN. Tanto na instrução Select quanto na cláusula Where.

IF()
IFNULL()
NULLIF()
CASE..WHEN..THEN..ELSE..END
Operadores de Comparação

São usados em todas as expressões avaliadas pela calculadora RPN. Tanto na instrução Select quanto na cláusula Where.

=, >, <, >=, <=, !=, <>
Operadores Lógicos exclusivos da cláusula Where

Usadas somente na cláusula Where, a calculadora RPN deverá esperar resultado condicional (0 ou 1):

AND, OR, IS, IN, NOT, LIKE e BETWEEN.

Group By e Order By

Funções de Agregação
MAX()
MIN()
SUM()
AVG()
COUNT()
ALIAS

About

Super fast database designed for bigdata that uses processing mechanisms like CPU, GPU and Hybrid.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages