2010-01-11 7 views
4

SQLiteDISQLite의 차이점은 무엇이며 다른 하나를 선택하려고하는 이유는 무엇입니까?대형 데이터베이스에 대해 SQLite와 DISQLite를 비교하는 방법은 무엇입니까?

필자가 생각하기에 큰 데이터베이스 (최대 10GB까지 가능)는 하나의 색인 된 필드와 하나의 텍스트 필드가있는 매우 단순한 테이블에 중요한 부분이 있습니다. 크기. 내 개발 도구는 Delphi 2009이며 데이터베이스는 내 .exe에 포함됩니다.

내 주요 기준은 속력입니다. 이것은 일반적인 Windows 컴퓨터에서 실행되는 소프트웨어 응용 프로그램을위한 것입니다 (예 : Windows 7 및 4GB RAM).

다른 데이터베이스 도구를 제안하려면이 항목이 내 응용 프로그램, 특히 속도 향상 영역에서이 두 가지보다 나을 이유를 말해주십시오.

+1

당신은 데이터베이스 * 엔진 * (데이터베이스 파일 자체가 아니라)이 실행 파일에 내장된다는 것을 의미합니까? – mghie

+0

예. 데이터베이스는 여전히 디스크 기반입니다. – lkessler

답변

4

AFAIR, DISQLite는 Sqlite의 obj 파일을 사용하여 원본 파일보다 더 많은 기능을 생성하고 동일한 sqlite DB 형식을 사용하므로 다른 언어로 DISQLite 데이터베이스 파일을 읽을 수 있습니다. Sqlite 드라이버를 지원합니다.

또한 DISQLite의 또 다른 기능인 Sqlite DLL을 배포 할 필요가 없습니다.

DISQLite는 최대 2TB까지 데이터베이스 크기를 지원하므로 문제없이 요구 사항을 처리 할 수 ​​있습니다.

내가 고려할 또 다른 옵션은 FireBird의 임베디드 버전입니다. 더 많은 확장을 원한다면 많은 노력없이 전체 FireBird 서버로 변경할 수 있습니다.

그러나 나는 Sqlite & DISQLite가 Firebird보다 성능이 뛰어날 것이라고 생각합니다.

나는 Sqlite 데이터베이스에 액세스하기 위해 을 사용하며, sqlite objs 파일로 컴파일하여 sqlite dll을 배포 할 필요가 없습니다.

+0

파이어 버드보다 성능이 뛰어나다는 의견에 감사드립니다. 그러나 Kavitesh가 말했듯이, SQLite는 소스 코드로 내 응용 프로그램에 컴파일 할 수 있으며 DLL이 필요하지 않습니다. – lkessler

+0

SQLite : http://www.sqlite.org/download.html sqlite-amalgamation은 전처리 된 C 코드를 응용 프로그램에서 사용할 수 있고 함께 컴파일 할 수있는 단일 소스 파일로 결합하여 제공합니다. 델파이에서 일한 적이 없기 때문에 C 코드를 직접 컴파일 할 수 있는지 또는 DLL에 모든 API에 액세스해야하는지에 대해서는 언급하지 않았습니다. –

+0

그는 C로 작성된 원본 sqlite 라이브러리의 소스 코드를 의미했습니다. 내 대답의 마지막 단락을 읽은 경우 Audcom Sqlite 구성 요소에서도 그렇게 할 수 있으므로 응용 프로그램과 함께 Sqlite Dll을 배포 할 필요가 없습니다 . –

2

독자적인 구현 방법을 제안 할 수 있습니다. 복잡한 SQL 쿼리가 필요하지 않다면 가장 간단한 (그리고 아마도 가장 빠른) 구현은 파일 기반 저장소입니다.

+0

나는 그 아이디어에 대해 잠시 생각했다. 참조 : http://stackoverflow.com/questions/1799634/how-should-i-implement-a-huge-but-simple-indexed-stringlist-in-delphi – lkessler

+0

필자는 순차적 읽기/쓰기에서 실제로 가장 빠른 성능에 동의합니다. .. 무작위 독서에 끔찍한 접근. 큰 데이터 세트에 대해 색인 된 액세스가 필요한 경우 엔진을 사용하십시오. 세트가 상대적으로 작거나 작성된 순서 대로만 읽으면 파일/스트림 기반 솔루션을 사용하십시오. – skamradt

1

DISQLLite에는 개인 및 비상업적 용도로 제한된 무료 버전이 두 가지 있습니다. 따라서 SQLite는 무료/유료 버전이없는 무료 오픈 소스 구현이므로 결정적인 요인 중 하나 일 수 있습니다.

두 데이터베이스 모두 GB 단위의 데이터를 처리 할 수 ​​있습니다. SQLite는 사전 컴파일 된 바이너리 즉 응용 프로그램에 따라 배포 할 수있는 DLL로 제공됩니다. 그러나 소스 코드를 사용하면 응용 프로그램 내에서 소스 코드를 컴파일하고 DLL이 없어도 사용할 수 있습니다.

DLL 모듈을 사용할 때의 이점은 일부 버그가 해결 된 경우 전체 응용 프로그램을 다시 컴파일하지 않고 클라이언트 컴퓨터에서 DLL을 간단하게 대체해야한다는 것입니다.

저는 SQLite가 yor 요구 사항에 더 좋은 옵션이라고 생각합니다. 데이터베이스의 속도는 전적으로 데이터베이스의 유형을 기반으로하지는 않습니다. 하드 디스크 액세스 속도, 사용 가능한 처리 능력, RAM 등과 같은 하드웨어 또한 데이터베이스 속도를 높이는 데 중요한 역할을합니다.

+0

하지만 왜 SQLite가 나에게 더 좋을 것이라고 생각합니까? 나는 속도가 외부 요인에 달려 있다는 것을 알고 있지만, Vista 또는 Windows 7 (4GB RAM 포함)을 실행하는 표준 Windows 컴퓨터에서는 나에게 더 좋을 것입니다. (제 질문에도이 점을 추가 할 것입니다). – lkessler

+0

SQLite는 아무 제한없이 opensource입니다. 비교 차트에서 DISqlite http://www.yunqa.de/delphi/doku.php/products/sqlite3/feature_chart?DokuWiki=t5fl5li3pqncsusi0qd0df90m3을 확인하면 대부분의 기능이 유료 버전으로 제공된다는 것을 알 수 있습니다. 또한 엔터프라이즈 수준의 데이터베이스를보고 있지 않기 때문에 성능 차이는 미미할 것입니다. 또한 지금 DISQLite는 무료 버전을 제공하며, 나중에 가격을 중단하거나 제공 할 수도 있습니다. 어떤 문제 일 수 있습니다. 또한 SQLite는 적극적인 커뮤니티 개발을 통해 쉽게 업데이트 할 수있게되었습니다. –

1

DISQLLite 개인용 버전에는 몇 가지 제한 사항이 있으며, 누구나 SQLite 랩퍼를 무료로 구현할 수 있으면 전문가 용 버전의 가격 (소스가없는 149.99 유로)은 가치가 있다고 생각합니다.

프리웨어 제품에 개인용 DISQLite를 사용하고 새 버전 릴리스에서 데이터베이스 변경을 구현해야했습니다. 개인용 버전은 'ALTER'를 지원하지 않으므로 정식 버전을 구입해야했습니다. 그래서 나는 DISQLite를 버리고 좋은 SQLite 래퍼를 사용했다. 가득 차있는 버전을 지불 할 준비가되어있는 경우에만 DISQLite로 이동하십시오.

SQLite4Delphi은 더 나은 옵션 일 수 있으며, 적어도 비용 효율적인 솔루션을 제시 할 수도 있습니다.

1

우리의 SynBigTable unit을보십시오. 그것은 much faster than SQLite 일 것이며 정확히 목적에 맞는 것 같습니다.

네이티브 SQLite 구현이 필요하면 SQLite3 framework을보십시오. 외부 DLL없이 무료이며 오픈 소스입니다. 그리고 닫힌 DiSQLite (SQL 함수 또는 가상 테이블 구현을위한 Delphi 기본 클래스와 같은)보다 더 많은 기능을 가지고 있습니다.

성능 POV의 경우 병목 현상은 사용중인 래퍼가 아니라 디스크 액세스 및 데이터베이스 설정 방법이됩니다. 가능한 한 빨리 데이터를 검색하려면 indexes을 사용하는 것을 잊지 마십시오. 그렇다면 10GB의 데이터조차 SQLite에서 문제가되지 않습니다. 사용하는 래퍼가 무엇이든간에.

+0

게시 해 주셔서 감사합니다. 내 질문에 대한 대답은 아니지만, 나는 SynBigTable에 대해 읽고있는 것에 깊은 인상을 받았으며, 내가 찾고 있었던 프로그램에 필요한 모듈 일 수도있다. 내 질문을 참조하십시오 : http://stackoverflow.com/questions/1799634/how-should-i-implement-a-huge-but-simple-indexed-stringlist-in-delphi 그 GpStructuredStorage 데리러,하지만 (먼저 테스트하지 않고) SynBitTable이 나에게 더 좋을 것 같다. – lkessler

+1

@lkessler SynBigTable에 대해 인용 한 적이 있습니다. 소프트웨어에서는 닫힌 질문이 없기 때문입니다.때로는 아키텍처의 스토리지 엔진을 변경하는 등의 첫 번째 의도를 변경하는 것이 좋습니다. 네버는 모든 문을 닫습니다. ;) –

+0

@lkessler Delphi에서 SQlite에 대해 물었습니다. DiSQLite뿐 아니라 여러 래퍼가 있습니다. 내 자신의 (가려는) POV에서 사용하기 위해 지불해야한다는 사실을 좋아하지 않습니다. OpenSource 라이브러리. 저것은 나가 자유롭고, 빠르고, 가벼운, Delphi 친절한 OpenSource SQLite3 포장지를 풀어 놓는 것을 최선을 다했다. 내 유닛에는 사용자 정의 SQL 함수 나 가상 테이블처럼 DiSQLite3이 지원하지 않는 SQLite3 기능을위한 고급 델파이 클래스 지향 래퍼가 있습니다. 가상 테이블은 단지 SQLite3의 보석입니다. ;) –

관련 문제