2008-09-15 9 views
10

데이터 액세스를 위해 Microsoft에서 매우 다양한 옵션을 제공합니다. 확장형 앱에 가장 적합한 앱은 무엇입니까?확장 성을위한 최상의 데이터 액세스 패러다임은 무엇입니까?

Linq에

우리가 Linq에를 사용 하는가? 확실하게 쉽게 알 수 있지만 SQL이 실제로 도움이되는지 알면 도움이됩니다. 또한 Linq를 사용하여 ASP.NET에서 비동기 쿼리를 실행할 수 없다고 들었습니다. 따라서 정말 확장 성이 있는지 궁금합니다. Linq를 사용하는 큰 사이트가 있는지 (가능한 stackoverflow 예외).

엔티티 프레임 워크

엔티티 프레임 워크에 대해 많이 razzmatazz을 듣지 마십시오. 내가 마음에두고있는 Object 모델에 더 가깝게 보인다.

아스토리아/동적 데이터

우리가 서비스로 우리의 데이터를 노출해야 하는가?

나는 NHibernate와 같은 다른 ORM 제품에 들어가기 전에 꽤 혼란 스럽다. 어떤 아이디어 나 지혜가 더 낫습니까?

+1

질문 제목을 편집하여 확장 성을 지정할 수 있습니다 (예 : "최상의 확장형 데이터 액세스 패러다임은 무엇입니까?"). 나는이 임무를 클릭하여 임박한 화염 전쟁에 들어갔다! –

답변

17

NHibernate 또는 Entity Framework를 권장합니다.대형 사이트의 경우 ADO.NET 데이터 서비스를 사용합니다. 나는 SQL에 LINQ를 사용하여 큰 일을하지 않을 것이다. Stack Overflow는 3 층이 아닌 2 층의 흥미로운 규모 문제로 끝날 수 있으며 데이터베이스의 물리적 측면이 변경되면 코드 리팩토링에 어려움을 겪습니다. 그냥 생각.

+1

나는 Linq에 대해 당신이 맞다고 생각합니다. 그것은 편리한 것처럼 보이지만 엔터프라이즈 솔루션은 아닙니다. 정말 내 개체 모델을 내 DB에 너무 가깝게 묶고 싶지 않습니다. 고마워, 나는 다른 옵션에 대한 연구를 할 것이다. –

+1

Leom, 나는 당신이 Linq와 SQL을 교환 할 수있게 Linq라는 단어를 사용하고 있다고 생각한다. Linq는 다양한 종류의 컬렉션/object/xml /*.* – Vin

+1

위에있는 표현식 구문 설탕입니다. LINQ to SQL은 LINQ to * SQL SERVER * –

15

ADO.Net 데이터 서비스 (이전 Astoria)는 중요한 역할을한다고 생각합니다. 웹의 REST 스타일 아키텍처와 잘 어울립니다. 웹은 확장 성이 있기 때문에

, 나는 그 아키텍처로는 확장 성이 너무 .. 는 또한, 당신은 SQL 서버 데이터 서비스에 대한 감시를 유지 할 수 있습니다입니다 다음 아무것도 ... 당신을 위해 일하는 어떤

+0

큰 응용 프로그램에 ADO.Net Data Services를 사용한 사람이 있습니까? –

+0

ADO.Net 데이터 서비스가 방금 출시되었습니다. 내 강조는 REST에 더 많은 것이었다. –

+0

예, 많은 ADO.NET Data Services 사이트가 이미 있습니다. 많은 사람들이 베타 버전에서 일찍부터 살기 시작했습니다. 그것은 지금 발표됩니다. Entity Framework 및 ADO.NET Data Services에 중점을 둡니다. Linq 2 SQL을 피하십시오. –

1

사용 같아요. 이미 정규화 된 데이터베이스 (즉, 기본 키와 외래 키의 정의가 좋은 경우)를 설정하는 것이 가장 쉽습니다. 그러나 쉽게 정규화되지 않는 데이터가있는 경우 Entity Framework는 LINQ to SQL보다 유연성이 있지만 구성하는 데 더 많은 시간이 필요합니다.

1

우리는 클러스터 환경에서 LINQ를 실험 해 왔으며 개별 컴퓨터와 클러스터에서 확장 성이 좋은 것처럼 보입니다. 제공 한 3 가지 옵션 중 LINQ는 각 옵션마다 약간 다른 대상이 있지만 더 나은 선택이라고 할 수 있으므로 acesss 패러다임을 결정하기 전에 데이터로 수행 할 작업을 정의해야합니다.

+0

클러스터 된 환경에서 성공적으로 사용하고 있다는 것을 알고 있습니다. 트랜잭션 처리량에 대한 대략적인 통계가 있습니까? –

4

관계형 데이터베이스에 대해 이야기하고 있다면 다른 계층에서 액세스하는 방법에 관계없이 저장 프로 시저에 모든 데이터 작업을 캡슐화하기위한 것입니다.

저장 프로 시저를 제외하고 데이터베이스에 대한 모든 읽기/쓰기 액세스를 비활성화하면 잘 정의 된 계약서에서 데이터 모델을 숨길 수 있습니다. 데이터 모델은 변경이 가능하므로 스토어드 프로 시저가 여전히 입력 및 출력을 존중합니다.

이렇게하면 DBA가 응용 프로그램을 자유롭게 조정하고 확장 할 수 있습니다. 이는 데이터베이스 외부의 도구로 SQL을 생성 할 때 매우 어려운 작업입니다.

+0

안녕하세요 Eric, 귀하의 의견을 보내 주셔서 감사합니다. 필자는 저장 프로 시저를 사용하는 것이 쿼리 성능을 최적화하는 좋은 방법이라는 것은 말할 필요도 없다고 생각합니다. 늘어나는만큼 Linq 함께 저장 프로 시저를 사용할 수 있습니다 알고 –

+0

수 있지만 일종의 LinqToSql 경험을 다운 그레이드. –

1

나는 linq을 제안합니다. 우리 사이트에서 잘 확장되고 사용하기에 충분히 간단합니다.

1

LINQ ...와 함께 저장 프로 시저를 사용하지만 sprocs를 데이터 액세스 계층으로 바꾸지 마십시오!

4

스토어드 프로 시저를 잠그는 것은 요즘 생각이 줄어들고있는 것 같습니다. 적어도 내 현재의 관찰이었습니다. 그 사고 방식은 ORM 세계에 직접적으로 도움이됩니다. 왜냐하면 일반적으로 테이블에 직접적으로 영향을 미치기 때문에 정서적으로 작용하기 때문입니다. 그러나 ORM은 소금을 사용할만한 가치가 있기 때문에 선택의 여지가 없습니다.

EF 주변에는 많은 의견이 있습니다. 좋은 점이나 나쁜 점이 무엇이든 관계없이 V1 제품이며 MS가 3 단계의 속도를내어 기다리는 것이 현명 할 수도 있습니다. 적어도 다음 회전 속도.

이 공간에서 가장 큰 선수는 NHibernate이며 커뮤니티에서이를위한 많은 지원이있는 것 같습니다. Linq, 언어 기능, NHibernate 스택에가는 길을 너무 멀어서는 안된다.

0

이 게시물은 클라우드가 실제로 벗어나기 전에 2008 년 출간 한 것입니다. 답변을 업데이트해야하는 것 같습니다. 나는 몇몇 연결 및 개관을 제공 할 것이다. 이 주제에이 사이트의 최신 게시물이 있으며, 찾으면 여기에 링크를 추가 할 것입니다.

데이터 확장 성 및 트랜잭션 처리 확장성에 관해서는 2017 년에 클라우드 및 클라우드 서비스 공급자에 대해 이야기해야합니다. 위대한 t의

비용

하나 :

는 나는 세 가지 클라우드 제공 업체는 이러한 일이 생각 클라우드 서비스 사용에 대한 힌트는 선행 비용과 해지 수수료가없고 사용하는 것에 대해서만 비용을 지불한다는 것입니다. (Alba의 2016 년 기사 " A Side-by-Side Comparison of AWS, Google Cloud and Azure"을 인용)

우리는 AWS를 사용합니다. 우리는 VM이 ​​설치되어 실행되는 동안에 만 비용을 지불하기 때문에 시작할 때 값싼 방법 일 수 있습니다. 일반적으로 서비스 제공 업체는 분당 또는 시간별로 요금을 청구하지만 그 전체 시간 동안 받으실 수 있습니다.

저렴한 방법은 최선의 가격으로 가격을 책정하는 것입니다. 스팟 가격은 단일 스팟 요청이 이행되도록하기 위해 입찰해야하는 가격을 나타냅니다. 입찰가가 Spot 가격을 초과하면 Amazon EC2가 Spot 인스턴스를 시작하고 Spot 가격이 입찰가를 초과하면 Amazon EC2가 Spot 인스턴스를 종료합니다.

A Side-by-Side Comparison of AWS, Google Cloud and Azure (뻔뻔 아마존의 사용 설명서 here을 인용하는 것은) here 가능한 세 가지 서비스 제공자의 나란히 비교를하고 좋은 기사입니다.

클라우드 서비스에서 더 학문적보기 위해

, here 2010 절차 사용할 수있는 INFOCOM에 유, 왕, 르네, 루 "Achieving Secure, Scalable, and Fine-grained Data Access Control in Cloud Computing"에 의해 2010 년 논문을 읽고,하지만 당신은 그것에 접근 할 수있는 IEEE 회원이해야 할 수도 있습니다 .그것은 다소 날짜가 있지만 탁월한 것이므로 점프 포인트로 사용할 수 있습니다.

클라우드의 확장 성이 폭발적으로 증가했으며 최근까지는 새로운 가상 머신을 초 단위로 시작하여 확장이 이루어졌지만 컨테이너를 사용하면 밀리 초 단위로 새로운 인스턴스를 생성 할 수 있습니다. 자세한 내용은 Docker 및 Docker 컨테이너 here을 확인하십시오.

이 답변에 대해 사과드립니다. 자세한 내용은 많은 링크가 있지만이 질문에 대한 대답은 업데이트되어야한다고 생각했습니다. 이 사실이 다른 사람에게 더 많은 세부 사항을 제공 할 수 있기를 바랍니다. 관련 정보를 이미 게시 한 경우 자신의 게시물에 대한 링크를 제공하는 것을 고려하십시오. 감사!

관련 문제