SQL Server Compact에 대한 제한 사항은 무엇입니까? (또는 MS 플랫폼에서 사용할 데이터베이스를 어떻게 선택합니까?)
데이터베이스가 필요한 MS Visual C# Express(필요하다면 Standard로 업그레이드할 의향이 있음)를 사용하여 구축하고자 하는 어플리케이션입니다.
저는 SQL Server Compact에 대해 매우 흥분했습니다. 왜냐하면 저는 컴퓨터에 제 애플리케이션을 설치하는 사람들이 전체 SQL Server 같은 것을 설치해야 하는 것을 원하지 않기 때문입니다.나는 이것이 최종 사용자가 설치하기에 최대한 쉽기를 원합니다.
그래서 저는 제 테이블에 있는 칼럼들로 제가 할 수 있는 일들이 한계가 있는 것처럼 보일 때까지 흥분했습니다.새 데이터베이스를 만들고 표를 만들고 열을 만들러 갔을 때 "텍스트" 데이터 유형이 없는 것 같습니다. 단지 "ntext"라고 불리는 것이 255자로 제한된 것 같습니다.int는 4로 제한된 것 같습니다(11개를 원했습니다).그리고 "auto_increment" 기능은 없는 것 같습니다.
이것이 제가 감당해야 할 진짜 한계인가요? (아니면 제가 "표준"이 아니라 "고속"을 사용하기 때문인가요?이것이 실제 제한 사항이라면 요구 사항을 충족하는 다른 데이터베이스 옵션은 무엇입니까?(사용자가 큰 역할을 할 수 있도록 쉬운 설치 - 최종 사용자는 컴퓨터를 사용하는 일반 사용자일 뿐이며 복잡할 경우 응용 프로그램에서 좌절할 것이라고 가정합니다.)
-아데나
추신: 또한 최종 사용자에게 데이터베이스 데이터를 암호화하기를 원합니다.나는 그들이 데이터베이스 테이블에 직접 접근하는 것을 원하지 않습니다.
PPS. http://www.microsoft.com/Sqlserver/2005/en/us/compact.aspx 을 읽었는데, 이러한 특별한 제한에 대한 논의는 보지 못했습니다.
암호화에 대해서는 잘 모르지만, 다음 링크가 도움이 될 것입니다.
://
나머지 부분에 관해서는:
"Text"와 "auto_increment"는 Access를 연상시킵니다.SQL Server Compact는 콤팩트 데이터베이스에서 사용되는 쿼리와 테이블이 수정 없이 전체 데이터베이스로 전송된다는 점에서 SQL Server의 서버 버전과 호환되도록 업그레이드되어야 합니다.이 점을 염두에 두고 먼저 Access name(액세스 이름)보다는 SQL Server 유형과 이름을 살펴보아야 합니다.varchar(max)
,bigint
,그리고.identity
안타깝게도 Compact Edition에는 varchar(max) 유형이 아직 없기 때문에 varchar(max)와 관련하여 실패합니다.그들이 그것을 곧 고치기를 바랍니다.그러나 검색 중인 ntext 유형은 255바이트 이상을 지원합니다. 실제로는 2개로30 5억 문자 이상을 지원합니다.
마지막으로 비긴트는 저장에 8바이트를 사용합니다.11개를 달라고 하셨잖아요.하지만 여기서 스토리지 크기가 사용 가능한 10진수 숫자를 표시한다는 점에서 혼란스러울 수도 있다고 생각합니다.이것은 절대 그렇지 않습니다.8바이트의 스토리지는 최대 2개의64 값을 허용하며, 11자리 이상의 숫자를 수용할 수 있습니다.이렇게 많은 항목을 가지고 있다면 서버급 데이터베이스를 원할 것입니다.만약 당신이 정말 숫자로 생각하고 싶다면, 그것은 있습니다.numeric
활자도 제공됩니다.
도움이 되기를 바라는 몇 가지 의견:
첫 번째 - 쓰기 중에 전체 데이터베이스를 잠가야 하는 경우가 아니라면 SQLite를 사용하지 마십시오(http://www.sqlite.org/faq.html#q6) . 더 중요한 것은 에 있을 수 있습니다.넷 애플리케이션 스레드를 지원하기 위해 다시 컴파일해야 할 정도로 스레드 안전하지 않거나 그 이상입니다(http://www.sqlite.org/faq.html#q6) .
현재 프로젝트의 대안으로 Scimore DB(ADO가 포함된 임베디드 버전이 있습니다)를 살펴봤습니다.Net provider: http://www.scimore.com/products/embedded.aspx) 하지만 LINQ To SQL을 O/RM으로 사용해야 했기 때문에 Sql Server CE를 사용해야 했습니다.
자동 증분(자동 키 증분을 말하는 경우)은 항상 그래왔던 것입니다. 예 표:
-- 테이블 사용자
CREATE TABLE Tests (
Id **int IDENTITY(1,1) PRIMARY KEY NOT NULL,**
TestName nvarchar(100) NOT NULL,
TimeStamp datetime NOT NULL
)
GO
텍스트 크기에 관해서는 답변이 된 것 같습니다.
다음은 마이크로소프트 technet의 암호화에 대한 정보 링크입니다. (http://technet.microsoft.com/en-us/library/ms171955.aspx)
이것이 조금이나마 도움이 되기를..
두 가지 요소에 동참해야 했습니다.
- 저는 Sql Compact를 많이 사용하는데, 이것은 단일 사용자, 내장된 데이터베이스, 단일 파일 데이터 저장소와 같은 용도에 매우 적합합니다.SQL의 우수성과 트랜잭션을 모두 갖추고 있습니다.그것은 나에게 충분히 평행선을 잘 가지고 있었습니다.이 페이지에서 반대하는 사람들 중 제품을 정기적으로 사용하는 사람은 거의 없습니다.서버에서 사용하지 마세요. 그런 용도가 아닙니다.많은 고객들이 이 파일이 "데이터베이스"라는 사실조차 모르고 있으며, 이는 단지 구현상의 문제일 뿐입니다.
- 사용자가 사용자의 데이터를 암호화하여 사용자의 프로그램에서만 볼 수 있도록 하려는 것입니다.이런 일은 일어나지 않을 것입니다.프로그램이 데이터를 해독할 수 있다면 키를 어딘가에 저장해야 합니다. 그러면 충분한 전용 공격자가 이 키를 찾을 것입니다.
키를 복구하려는 노력이 정보의 가치가 없을 정도로 충분히 숨길 수 있습니다.Windows(윈도우)에는 약간의 깔끔한 기계 및 사용자 로컬 암호화 루틴이 있습니다.그러나 사용자가 컴퓨터에 숨겨둔 데이터를 찾을 수 없다는 강력한 요구사항이 설계에 포함되어 있다면(프로그램을 사용할 경우) 다시 설계해야 합니다. 즉, 보증을 수행할 수 없습니다.
SQL CE는 저에게 퍼즐입니다.또 다른 SQL 데이터베이스 플랫폼이 꼭 필요했을까요?최근 몇 년간 MS의 모바일 플랫폼을 대상으로 한 세 번째 사례입니다.저는 그것이 마지막이 될 것이라는 자신감이 별로 없을 것입니다.SQL Server와 어떤 기술이라도 공유되진 않습니다. 제가 알기로는 처음부터 새로워졌습니다.
SQLite와 Codebase 모두에서 더욱 성공적으로 사용해 본 결과 더 성공적이었습니다.
에디트: 여기 차이점 목록이 있습니다.
ntext
는 매우 큰 텍스트 데이터를 지원합니다(MSDN 참조 - Compact 4.0의 경우이지만, 말씀하시는 데이터 유형의 경우 3.5에도 동일하게 적용됩니다.
int
f4
는 스토리지의 4바이트/32비트를 의미합니다(–2,147,483,648 ~ 2,147,483,647).varbinary
을 증가시키는 작업은 Server 를 됩니다.IDENTITY
키워드. 할 때 에서 열 하므로 다른 할 수 있습니다.이렇게 하면 데이터를 행에 삽입할 때 SQL Server가 열 값을 자동으로 결정하여 다른 행과의 충돌을 방지할 수 있습니다.
SQL Compact에서 데이터베이스를 작성할 때 암호를 설정하거나 데이터베이스를 암호화하여 사용자가 응용프로그램에 직접 액세스하지 못하도록 할 수도 있습니다.MSDN의 데이터베이스 보안을 참조하십시오.
위에서 언급한 모든 항목은 SQL Server의 사용 방법을 이해하고 있기 때문에 실제로 제한 사항이 아닙니다.
그럼에도 불구하고 SQL Compact에는 몇 가지 한계가 있습니다.
- 지원 없음
NVARCHAR(MAX)
NTEXT
이에 딱 들어맞습니다.
- 지원 없음
VIEW
거나PROCEDURE
s- 이것이 제가 볼 때 주요한 한계입니다.
저는 다양한 SQL Server Compact 버전을 몇 번 사용해 보았지만 모바일 플랫폼에서 데이터 캡처 저장소로만 사용해 본 적이 있습니다. 서버 데이터베이스와의 동기화에 적합하며 이러한 시나리오를 사용할 경우 선택 사항이 될 수 있습니다.
하지만 그 이상의 작업이 필요하고 애플리케이션의 기본 데이터베이스 역할을 수행하는 경우 SQLLite가 더 나은 옵션일 수 있습니다. 완전히 견고합니다.(예를 들어, 아이폰에서 사용) 모든 종류의 장소에서 광범위하게 지원되고 발견되지만 놀랍게도 (가상현실 시뮬레이터 OpenSim은 기본 데이터베이스로 사용합니다) 그리고 많은 다른 것들(Microsoft 포함)이 있습니다.
SQL CE의 대안으로 VistaDB를 사용해야 합니다.
VistaDB는 암호화(Blowfish)를 지원하며, TEXT뿐만 아니라 NTEXT(FTS 인덱스 포함)도 지원합니다.
예, SQL Server 유형을 실제로 일치시키려면 위의 게시물이 정확합니다. VistaDB는 SQL Server 유형도 사용합니다(실제로 SQL CE보다 더 많이 지원하며 XML만 누락됨).
VistaDB와 SQL CE 간의 다른 비교를 보려면 비교 페이지를 방문하십시오.또한 자세한 내용은 VistaDB의 장점에 대한 SO 스레드를 참조하십시오.
(전체 공개 - VistaDB의 소유자이므로 편향될 수 있음)
이 게시물(http://www.nelsonpires.com/web-development/microsoft-webmatrix-the-dawn-of-a-new-era/) 에 따르면 데이터베이스 파일을 사용하기 때문에 읽기/쓰기마다 하나의 프로세스만 액세스할 수 있으므로 파일에 대한 독점적인 액세스가 필요하다고 합니다.또한 256개의 연결로 제한되며 전체 파일을 메모리에 로드해야 할 가능성이 높습니다.따라서 SQL 서버 컴팩트는 사이트가 성장할 때 좋지 않을 수 있습니다.
제약 조건이 있습니다...조엘이 자세한 이야기를 한 것 같습니다.SQL CE는 모바일 개발에 매우 적합합니다.대부분의 "임베디드" 데이터베이스 솔루션은 유사한 제약 조건을 가지고 있습니다.체크아웃
언급URL : https://stackoverflow.com/questions/407521/what-are-the-limitations-to-sql-server-compact-or-how-does-one-choose-a-data
'itsource' 카테고리의 다른 글
디브를 용기 바닥에 띄우려면 어떻게 해야 합니까? (0) | 2023.10.09 |
---|---|
Oracle Streams와 Change Data Capture의 차이점은 무엇입니까? (0) | 2023.10.09 |
배열 요소가 존재하는지 확인하려면 어떻게 해야 합니까? (0) | 2023.10.09 |
자바스크립트에서 문자열 내부의 공백 제거 (0) | 2023.10.09 |
C에서 casting void 포인터는 언제 필요합니까? (0) | 2023.10.09 |