Não ter restrições em um banco de dados NoSQL significa total flexibilidade de dados. Isso parece atraente a princípio, pois economiza tempo de desenvolvimento ao não definir nenhuma coluna ou tipo de dados no momento do início de suas coleções. Mas essa flexibilidade tem um custo, especialmente quando seu banco de dados cresce o suficiente e alguns dos documentos podem conter valores incorretos ou atributos ausentes, difíceis de encontrar em consultas. Isso, por sua vez, pode alterar o conjunto de resultados de suas consultas e, em última análise, prejudicar suas decisões de negócios.
Por outro lado, um banco de dados relacional requer tabelas e colunas definidas antes de você começar a acessar seu banco de dados. Como esses dados são armazenados em um formato estrito, não há possibilidade de valores incorretos ou atributos ausentes e retornam resultados de consulta precisos. É claro que garantir regras de formato estritas praticamente acaba com qualquer flexibilidade de dados que você tinha e diminui a capacidade de adicionar e, portanto, consultar novos dados.
Restringir a flexibilidade de dados
Mas não se preocupe, você pode ter o melhor dos dois mundos usando gatilhos NoSQL. No NosDB, um banco de dados de documentos NoSQL baseado em .NET, você pode usar gatilhos para validar seus dados e impor regras de dados, garantindo a consistência do formato de dados, não importa o tamanho do banco de dados. Triggers são funções registradas em uma operação de banco de dados. Eles são executados em resposta à operação que está sendo executada, portanto, 'disparando' a função.
Para usar, basta criar uma classe .NET e implementar Alachisoft.NosDB.Common.Triggers.IDatabaseTrigger da biblioteca NosDB Common encontrada na pasta de instalação. Existem dois métodos disponíveis, mas usaremos apenas o método PreTrigger e deixaremos o método PostTrigger como está, pois queremos apenas validar nossos dados antes de adicioná-los à coleção. Aqui está o código de exemplo:
Este código garante duas coisas.
- Retorne 'false' para rejeitar o objeto se tivermos um atributo ausente.
- Atualize um documento JSON, se estiver ausente, com um valor padrão e retorne "true" para aceitar os dados.
Poderíamos também verificar se um atributo é do tipo de dados exato ou não, e rejeitar a entrada de dados conforme necessário.
Para registrar esta trigger em uma coleção, abra o NosDB Management Studio. Conecte-se a um cluster e selecione uma coleção de um banco de dados. Expanda até as 'Coleções' e abra o menu de contexto clicando com o botão direito do mouse em CLR Triggers. Siga o assistente de registro do acionador. Dê uma olhada na figura a seguir para ter uma ideia melhor:
Como estamos interessados apenas em validar os dados em cada inserção (como mostrado no código acima ) você só precisa registrar o PreInsert Trigger. E é isso!
O NosDB é um banco de dados .NET NoSQL de código aberto e 100% nativo (lançado sob a licença Apache 2.0). O NosDB é super rápido e linearmente escalável, permitindo que seus aplicativos .NET lidem com cargas de transação extremas (XTP) e funciona no Visual Studio.
O NosDB também ajuda a acelerar o desenvolvimento .NET fornecendo um esquema JSON flexível. Com o JSON, você pode se ajustar rapidamente às mudanças nos requisitos de dados, reduzindo assim o tempo de lançamento no mercado.