TxQuery는 자체적으로 SQL문을 수행할 수 있는 상용 DataSet 컴포넌트입니다. 다른 데이터셋들로부터 데이터를 가져와 조인을 하여 새로운 결과를 만들어낼 수도 있습니다. 꽤 애용자들이 많았었고, 저도 꼭 필요한 경우가 있어 사용한 적이 있습니다.
그런데 이 TxQuery가 몇년 전부터 업그레이드가 되지 않고, 홈페이지도 폐쇄되었었습니다. 대단히 유명한 컴포넌트는 아니지만 경우에 따라서는 다른 대안이 없이 꼭 필요한 컴포넌트이기 때문에 많이 아쉬웠었는데요.
조금 전에 서핑하다가 TxQuery가 다시 업그레이드되고 있다는 것을 알게 되었습니다. 유명한 델파이 매니아 중 한 사람인 Chau Chee Yang씨가 2009년 말에 원 개발자인 Alfonso Moreno씨에게 연락하여, 오픈소스화를 허락받았다고 하더군요. 게다가 Chau Chee Yang씨는 유니코드 마이그레이션까지 완료해놓아서 델파이 XE, 2010, 2009 버전까지 지원합니다.
TxQuery의 가장 큰 장점은, 클라이언트로 가져온 여러 데이터셋들로부터 로컬 조인이 가능하다는 것입니다. 예를 들면, 다음과 같이 사용합니다. (헬프에 소개된 샘플 코드인데, 설명을 위해 일부러 모두 코드로 구현한 것이며, 폼디자이너에서 각 데이터셋들을 추가할 수 있습니다)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
procedure TForm1.FormCreate(Sender: TObject); var XQuery: TxQuery; Item: TXDataSetItem; sql: String; begin XQuery := TxQuery.Create(Self); XQuery.AddDataSet(Table1, 'Customer'); XQuery.AddDataSet(Table2, 'Orders'); XQuery.AddDataSet(Table3, 'Items'); XQuery.AddDataSet(Table4, 'Parts'); XQuery.SQL.Text := 'SELECT * FROM customer c INNER JOIN Orders o ' + 'ON (c.CustNo = o.CustNo) INNER JOIN Items i ' + 'ON (o.OrderNo = i.OrderNo) INNER JOIN Parts p ' + 'ON (i.PartNo = p.PartNo);'; XQuery.Open; end; |
TxQuery는 로컬 조인이 가능하기 때문에, 원래의 데이터베이스가 뭐였는지에 대해 완전히 투명하게 됩니다. 즉, 서로 다른 데이터베이스로부터 가져온 데이터셋들을 조인할 수도 있게 됩니다.
또, SQL을 지원하지 않는 데이터스토어, 예를 들면 버클리DB 등에 대해서도 SQL 쿼리가 가능해지죠. (물론 그러려면 실제 필요한 것보다 훨씬 더 많은 데이터를 로컬로 가져와야 하는 경우가 생기지만, 그래도 가능하기만 하다면, 하고 간절한 경우가 종종 있죠)
현재의 최신 버전은 1월 21일에 공개된 2.1 버전이구요. 구글 코드 사이트에서 다운로드할 수 있습니다.
http://code.google.com/p/txquery/
궁금한게 있는데 혹시 제4의불 이나 IT 거의 모든역사 라는 책.. 지으신분이 박지훈씨 본인이신가요?
글을참 잘쓰신거같아서 예전부터 궁금했는데 지금 물어보네여..
헉.. 저 그런 책 쓴 적 없답니다. 지훈이라는 이름이 워낙 흔해서…
IT 업계에도 박지훈이라는 동명이인이 참 많더군요. 제가 들어본 사람만 대여섯명?