2011-08-21 6 views
0

필요 1 사용자가 다른 사용자의 친구가 될 수 있습니다. User (Id, Name, Date, Etc.) SQL Server : 친구 클래스 "facebook like"

  • 이 테이블 테이블 Friends (UserId, Friend_UserId)
  • , 내가 한 사용자가 다른 친구가 있음을 일치시킬 수 있습니다

    • 테이블 : 그래서 나는이 테이블을 사용할 수 있다고 생각합니다 사용자. 문제는 1000 명의 사용자에게는 1000 * 1000 = 1.000000 또는 행이 있다는 것입니다.

      SQL Server에 저장할 수있는 행의 양을 모르겠지만, 내 질문은 1 백만 사용자에게 무슨 일이 일어 났습니까? SQL Server에 충돌이 있습니까?

      누구나 친구 클래스에 대한 경험을 공유 할 수 있습니다 (OOP 개념에서 나는 이것이 이름이라는 것을 기억합니다)!

    +0

    SQL Server는 ** 수백만 행을 처리 할 수 ​​** 있습니다. 전혀 문제가 아닙니다. ..... –

    +2

    디자인은 괜찮습니다. SQL Server에는 백만 행이 없습니다. –

    답변

    0

    좋은 SQL 서버의 많은 이유 중 하나는 특히 많은 행을 보유하고 쿼리하는 것입니다. 테이블의 1,000,000 행을 방지하는 데는 아무런 문제가 없습니다 (HDD 공간과 같은 실제 서버 리소스를 넘어서는).

    1

    예 : 1000 * 1000은 모든 사용자가 모든 사람과 친구라는 것을 의미합니다. 왜 협회를 보관해야합니까?

    정말 그런 경우입니까? 아니면 이론적 인 한계를 테스트하고 있습니까?

    그리고 각 협회마다 2 부를 보관 하시겠습니까? 사용자 1과 사용자 2가 친구라고합시다. 다음 두 행이 모두 포함 된 테이블을 만들 예정입니까?

    UserId, Friend_UserId 
    1   2 
    2   1 
    

    이렇게하면 필요한 데이터의 양이 두 배가됩니다. 두 ID 중 낮은 것이 항상 하나의 열에 있음을 규칙으로 만들어야합니다.

    물론 두 열을 모두 색인화해야합니다.

    +0

    예입니다. 개념은 2 개의 ids를 '매핑'하는 데 사용할 수있는 권리가 있다면 ... – Dada

    0

    내 질문은 1 백만명의 사용자에게 무슨 일입니까? SQL Server에 충돌이 있습니까?

    예, 휴대 전화로 실행하면 가능합니다.

    테이블에서 수십억 개의 행을 손쉽게 처리 할 수있는 적절한 하드웨어로 실행하십시오. 데이터웨어 하우스 프로젝트는 항상 그렇게합니다.

    +0

    실제 사례가 100,000 명의 사용자라고 생각합니다. 따라서 약 10 억입니다. 나는 "사용자 1의 친구들을 사귀어"라는 질문을 이미지로 그린다. 무슨 힘이 필요한가요? – Dada

    +0

    10b 행을 사용하면 인덱싱에 대해 생각하고 인덱스 주위에 쿼리를 디자인하는 방법을 고려해야합니다. 현재 어떤 종류의 하드웨어를 사용하고 있습니까? SQL 성능은 테이블에 저장할 수있는 행 수뿐만 아니라 실행하는 쿼리의 종류와 이러한 쿼리가 실행되는 빈도에 관한 것입니다. SQL 서버에 대한 책을 읽으면이 사실에 대한 더 많은 정보를 얻을 수 있습니다. – deutschZuid

    +0

    예. 분명히 당신은 좋은 하드웨어를 가져야한다. SuperMicro는 72 개의 디스크가있는 4 대의 RU 컴퓨터를 지원합니다 ... 그리고 IO + 많은 RAM이 필요합니다. – TomTom

    1

    서버에 1000 명의 사용자와 친구를 저장할 수 있고 서버에 10000 명의 사용자와 친구를 저장할 수 있으며 서버에 1M 명의 사용자와 친구를 저장할 수 있지만 100M을 저장할 수는 없습니다 사용자와 친구들을 만나고 DB를 쓰거나 읽는 응답에 대해 적절한 대기 시간을 가지십시오. 소셜 웹 규모의 앱에는 성공적인 앱을 처리 할 수있는 단일 상자가 없습니다. 이것이 게임의 이름이 스케일 아웃 및 샤딩 인 이유입니다. 및 get real을 선택하고 지금은 문제를 무시하십시오. 또는 design a for it을 선택할 수 있습니다. 또한 Sharding With SQL Azure을 읽고 other alternatives으로 읽을 가치가 있습니다.