Tenho a sensação de que a maioria dos sistemas de banco de dados se originou nos anos 80 e implementa estereotipicamente tabelas, transações ACID e restrições. Eles foram construídos pensando na escassez de memória, disco e poder de processamento.
Gostaria de saber se existe algum sistema de armazenamento (não necessariamente acessível por meio do SQL) capaz de lidar com o seguinte:
- grafos (consultando a la SPARQL).
- matriz (n-dimensional) também esparsa. Suporte de algoritmos triviais de matriz, como SVD, agrupamento.
- gerenciamento eficiente de grandes (tamanho terabyte) de dados que não mudam continuamente; a mudança está acontecendo por meio de lotes diários.
- fazer uso de grandes sistemas de disco (14 TB de RAID5 custa hoje menos de US$ 1.500). Isso significa mais espaço para índices, resultados pré-calculados, etc.
- fazer uso de GPU/vários núcleos/processadores/nós, para uma grande consulta e indexação.
Sei que a maioria dos itens estão implementados em algum lugar (Apache Cassandra, SPARQL, Netezza, Exadata), mas não tenho conhecimento de nenhum produto que possa implementar todos.
Acho que muitos desses itens estão no horizonte (ou além).
SPARQL, por exemplo, é algo que não vejo os bancos de dados incorporando tão cedo. O mais próximo que vi é SDB , uma interface que processa SPARQL e o envia para um banco de dados padrão.
Além disso, usar GPUs como processadores genéricos ainda é algo revolucionário. Ainda não pegou no mundo do banco de dados. Nesta fase, ainda está no mundo da academia e da teoria.
Há apenas um grupo (que consegui encontrar) que está desenvolvendo um banco de dados para aproveitar a GPU. Alenka é um projeto de código aberto, mas ainda está em desenvolvimento.
Além disso, há um novo algoritmo de classificação chamado GPUTeraSort no horizonte. Mas (sendo um algoritmo), não conheço nenhum banco de dados específico que o use neste momento.
Finalmente, há um site, GPGPU , para computação de propósito geral em GPUs que você pode querer ficar de olho. À medida que surgirem bancos de dados que usam a GPU, este será o site que o reportará.
Dito tudo isso, usar vários núcleos ou vários processadores é quase o status quo. SQL Server, MySQL, Oracle - todos os principais bancos de dados usam multi-threading.
Em última análise, os itens que você está pedindo são algo que atualmente está muito além do mundo do banco de dados.
Você também pode tentar postar isso no StackOverflow, pois eles podem ter algumas ideias de como lidar com dados em nível de Terabyte usando gráficos, SPARQL, aprimoramentos de GPU etc. No entanto, a resposta deles provavelmente será algo como: "Sim , você pode fazer isso, mas seria um enorme sistema customizado."