AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 8451
Accepted
kevinskio
kevinskio
Asked: 2011-11-28 14:11:26 +0800 CST2011-11-28 14:11:26 +0800 CST 2011-11-28 14:11:26 +0800 CST

Tabelas de decisão no banco de dados: uma solução válida?

  • 772

Tenho que estender um aplicativo de gerenciamento de casos .Net 4/C# que usa o Oracle 11g para lidar com casos legais.

Tenho um orçamento mínimo, minha experiência com Oracle e um desenvolvedor C# muito júnior para fazer isso. O módulo adicional será utilizado por no máximo 20 pessoas em uma intranet.

As regras existentes são geralmente assim:

  • para completar uma ação deve haver propriedade a, propriedade b, propriedade c presente em uma tabela com uma relação claramente definida com a tabela onde a nova inserção deve ser validada
  • Para casos legais, novas regras de negócios são mais como "tudo é uma exceção" Mais formalmente reformulado, pois as entradas de dados em outras tabelas podem ou não afetar o resultado de transações futuras com base em condições desconhecidas

O aplicativo existente usa o Microsoft Workflow para implementar as regras de negócios. Isso provou ser pesado, quase inutilizável para nós. Drools e seus equivalentes comerciais são igualmente complicados e não atingirão o objetivo de permitir que os gerentes entendam sua lógica de negócios.

  • seria um benefício se a lógica de negócios pudesse ser vista pelos usuários em um relatório sem a necessidade de ler comentários ou código C#.
  • a lógica pode ser adicionada ou desabilitada rapidamente sem desativar o aplicativo da web
  • bastante fácil de implementar, dado que temos orçamento limitado e conjuntos de habilidades

Isso me traz à velha ideia de manter a lógica de negócios no banco de dados como uma série de tabelas de decisão. Isso ainda é feito ou tem a ideia de que a eficiência de manter a lógica de negócios no aplicativo é obviamente melhor?

Editar: o fluxo de trabalho é implementado como um serviço. Meu entendimento é que ele visava fluxos de trabalho de longa duração. No nosso caso, os usuários pressionam o botão salvar e o fluxo de trabalho é executado. Nossos problemas são
- dolorosamente lento para desenvolver em nossas máquinas, congela, trava
- difícil de depurar
- de vez em quando o gerenciador de fluxo de trabalho lança erros por algumas horas sem motivo que possamos encontrar
- toque em um fluxo de trabalho e você terá que alterar 14 outros arquivos
- o aplicativo é lento para os usuários, parte dos quais rastreamos os fluxos de trabalho.

A validação no banco de dados começa a parecer boa porque a validação é toda baseada nos dados do banco de dados.
@catcall Existem 10 ou 12 advogados que não usam o aplicativo, mas têm 8 ou 10 administradores para fazer a entrada de dados.
Acabamos de atualizar o desktop, mas o chefe não acredita que os programadores contratados devam ter equipamentos melhores do que funcionários. Portanto, o Windows XP com 4 núcleos e 3 GB de RAM é o melhor que podemos fazer. Investigarei se existe alguma classificação de tipos de lógica de negócios. Algumas delas podem ser feitas de forma mais eficiente no aplicativo. Outros tipos podem ser alterados e configurados com mais facilidade no lado do banco de dados.

best-practices oracle-11g-r2
  • 1 1 respostas
  • 831 Views

1 respostas

  • Voted
  1. Best Answer
    Mike Sherrill 'Cat Recall'
    2011-11-29T01:10:40+08:002011-11-29T01:10:40+08:00

    O módulo adicional será utilizado por no máximo 20 pessoas em uma intranet.

    "Pessoas" é um termo confuso quando você está falando sobre aplicações legais. Apoiar 20 advogados é muito diferente de apoiar 1 advogado, 4 paralegais e 15 funcionários.

    Para casos legais, novas regras de negócios são mais como "tudo é exceção"

    E esse é um dos motivos. No gerenciamento de casos, certos tipos de coisas são simplesmente determinísticos. Momento das respostas, prazos para arquivamento, coisas assim. Mas as regras que regem foram escritas por advogados para advogados. As empresas que constroem software de gerenciamento de casos têm advogados na equipe para ler as regras de procedimento (que mudam com o tempo) e para verificar se seu software está em conformidade com as regras.

    Alguns deles têm muitos advogados.

    Outros tipos de coisas são governados pelo capricho. Por exemplo, alguns pacotes de gerenciamento de casos permitem que os usuários "modelem" suas tarefas. Inserir algo como "Depósito" no calendário também pode agendar uma série de tarefas anteriores que devem ser feitas para se preparar para o depoimento. Sob a pressão de prazos múltiplos e incompatíveis, partes de uma cadeia de tarefas são descartadas ou recebem pouca atenção.

    Agora, para (finalmente) chegar à sua pergunta. . .

    As tabelas de decisão no banco de dados são uma solução viável. Na verdade, as tabelas de decisão constituem um banco de dados, estejam elas armazenadas no Oracle ou no código do aplicativo. Existem compensações óbvias para armazenar tabelas de decisão no código do aplicativo.

    Mas as tabelas de decisão no banco de dados provavelmente não são uma solução viável para você. O problema que você tem, se bem entendi, é que você acha que pode precisar simplificar a arquitetura das tabelas de decisão para eliminar (ou pelo menos reduzir bastante) o uso do Microsoft Workflow. Com apenas dois de vocês e um orçamento mínimo, o sucesso será difícil na melhor das hipóteses.

    Posso sugerir duas coisas.

    1. Você pode produzir economicamente um protótipo de um sistema de substituição construído em tabelas de decisão?
    2. Você pode usar um hardware melhor no sistema existente?
    • 3

relate perguntas

  • Qual é a configuração RAID recomendada para um banco de dados Oracle?

  • Por que a autenticação do sistema operacional é considerada uma segurança ruim para bancos de dados Oracle?

  • Como você versiona as alterações do banco de dados Oracle?

  • Existe uma maneira de permitir que uma conexão proxy use autenticação passada em um link de banco de dados público?

  • Melhores práticas para conectar bancos de dados que estão em diferentes regiões geográficas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como você mostra o SQL em execução em um banco de dados Oracle?

    • 2 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Posso ver Consultas Históricas executadas em um banco de dados SQL Server?

    • 6 respostas
  • Marko Smith

    Como uso currval() no PostgreSQL para obter o último id inserido?

    • 10 respostas
  • Marko Smith

    Como executar o psql no Mac OS X?

    • 11 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Marko Smith

    Passando parâmetros de array para um procedimento armazenado

    • 12 respostas
  • Martin Hope
    Manuel Leduc Restrição exclusiva de várias colunas do PostgreSQL e valores NULL 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler Quando uma chave primária deve ser declarada sem cluster? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - Qual é melhor como chave primária? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick Como posso otimizar um mysqldump de um banco de dados grande? 2011-01-04 13:13:48 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve