2011-03-15 5 views
2

나는 사용자에게 sql을 만들기 위해 많은 "유연성"을 제공하는 제품을 연구하고 있습니다. 즉, 시스템을 포괄적으로 포함하는 무언가를 시스템에 가져올 수있는 쿼리를 쉽게 설정할 수 있습니다. 조항.직교 좌표 또는 기타 합리적인 쿼리를 감지

나는 잠재적으로 사건이 발생했을 때 사용자에게 경고하고 싶습니다.이 목적을 위해 지능적으로 분석 할 수있는 전략이 있는지 궁금합니다.

답변

1

나는 당신의 고통을 느낍니다. 나는 과거와 비슷한 일을 맡았습니다. 사용자가 SQL의 모든 기능을 요구하면서도 너무 복잡하고 도움이되지 않으며 어리석은 일을 막지 못한다는 불만을 토로하는 끊임없는 투쟁입니다.

쿼리에 페이징을 추가해도 잘못된 쿼리가 실행되는 것을 막을 수는 있지만 손상을 줄일 수 있습니다. SELECT * FROM UNIVERSE에서 반환 된 처음 50 개의 레코드 만 표시하고 다음 50 개로 페이지를 넘기는 기능 등을 제공하면 메모리 문제를 피하고 성능 저하를 줄일 수 있습니다.

귀하의 데이터/비즈니스 도메인에 적합한 지 모르겠습니다. 하지만 사용자가 테이블 조인을 제공하지 않으면 강제로 테이블 조인을 추가합니다. 쿼리에 표 A와 표 B가 포함되어 있으면 A.ID가 B.ID와 같아야합니다. 나는 그것을 더한다.

데이터베이스와 관련된 코드를 작성하는 데 신경 쓰지 않는다면 데이터베이스에서 쿼리에 대한 데이터를 얻을 수 있습니다 (Explain Plan : Oracle - http://www.adp-gmbh.ch/ora/explainplan.html). 먼저 쿼리에서 계획을 실행하고 그 결과를 사용하여 사용자에게 메시지를 보내거나 경고 할 수 있습니다. 그러나 세부 사항은 귀하가 함께 일하고있는 DB에 따라 달라질 것입니다.

+0

이런 상황에서 페이징은 중요하지 않으므로 시스템에 완전히 호스를 꽂는 것은 매우 쉽습니다. 나는 데이터를 통해 페이지를 변경하려고했기 때문에 내가 할 수있는 유일한 일은 그것이 매우 높다고 생각할 때 배치 크기에 대한 결과의 비율을보고하는 것입니다. – barrymac