2012-02-14 2 views
-1

헤일로 모두,큰 데이터에서 너무 빨리 쿼리하는 방법?

내 사용자가 Facebook의 모든 친구 목록 정보를 가져 와서 그 데이터에 대해 검색하고 싶습니다. 하지만 나는 그것을 빨리하고 싶다.

예를 들어 사용자 A에게는 20 명의 친구 이름 B와 W가 있습니다. 그는 친구가 누구인지 궁금합니다.

내 일반적인 절차는 다음과 같습니다 모든 친구의 이름과 생일

  1. GET 목록 (페이스 북의 API를 사용하여). 잘

12월 (22), 내가 이런 짓을하지만 너무 많은 시간이 걸립니다 -을 년 11 월 22 일부터 생일이있는 목록에서 데이터베이스 (MySQL은)

  • 쿼리 (사용 MySQL의)에 저장
  • . 그리고 나는 그것을 더 빨리 만들고 싶다. 나는 그것이 데이터베이스에 모든 것을 먼저 저장해야하기 때문이라고 생각합니다.

    배열에서 쿼리 할 수있는 방법이 있거나 RAM에이 데이터를 저장하고 검색 할 수 있다면 훨씬 더 빠를 것이라고 생각합니다.

    나에게 어떤 해결책이 있니?

    들으를 많이

    아리

  • +0

    는 "너무 많은 시간이 소요에 그 지역에서 전문 용어를 많이. 그리고 난 그것을 빨리 만들고 싶어은. 나는 데이터베이스에 모든 것을 저장할 필요가 있기 때문에 생각 먼저." 확실합니까? 페이스 북에서 값을 가져 오는 데 얼마나 걸리나요? 값을 데이터베이스에 저장하는 데 시간이 얼마나 걸립니까? 총 프로세스는 현재 얼마나 걸립니까? 얼마나 오래 걸릴까요? –

    +1

    네, 해결책이 있습니다. Facebook에서 데이터를 가져 오는 데 걸리는 시간, 데이터를 데이터베이스에 저장하는 데 걸리는 시간 및 데이터를 쿼리하는 데 걸리는 시간을 측정합니다. 어느 것이 느린 지 확인한 다음 더 빨리 만들려고 노력하십시오. (그런데, FB에서 데이터를받는 것이 느린 부분 일 때 99 % 베팅) – njr101

    +0

    네가 맞아 fb 부분이 느리지 만 여전히 개선 할 수있는 부분은 데이터베이스에 저장하고 쿼리 할 부분이다. 데이터베이스에서. 그래서, 그것을 memori (RAM)에 저장하고 검색 할 수 있습니까? – ari

    답변

    0

    어떤 최적화하는 첫 번째 단계는 시간이 소요되는 위치를 알 것입니다. 일반적인/명백한 해결책이있을 수 없습니다. 그렇지 않으면, 모든 사람이 처음부터 올바르게 이해하고 문제가 존재하지 않기 때문에 아무 것도 느릴 수 없습니다.

    그래서 앉아 있어야하고, 앱에 프로파일 링 코드를 추가하고, 몇 가지 테스트를 실행하고, 시간이 소비 된 곳을 발견했을 때 돌아와야합니다. 그러면 우리는 더 많은 도움이 될 것입니다.

    +0

    thx aaron, 시간이 많이 걸린 프로세스는 "데이터를 페이스 북으로 가져 오는 것"입니다. 내가 paralel 프로세스를 사용하여 향상시킵니다. (나는 다른 해결책을 생각할 수 없다, 어떤 생각 ???)하지만 데이터 및 쿼리 데이터를 저장하려면 속도를 높이고 싶습니다. 나는 기억에 저장하고 memori로부터의 질의가 훨씬 빠를 것이라고 생각한다. 왜 그런지 알기를 원한다. – ari

    +0

    질문이 너무 일반적이다. 원하는 것을 성취 할 수있는 방법은 수천 가지가 있지만 각 솔루션은 세부 사항에 달려 있습니다. 캐싱, 프록 싱, 클러스터링을 시도하거나 자신 만의 것을 작성할 수 있습니다. 쿼리의 복잡성, 데이터의 양, 수천 가지에 따라 다릅니다. 간단한 해결책은 데이터를 텍스트 파일로 덤프하고 텍스트 편집기를 사용하여 검색하는 것입니다. –

    0

    Facebook API에 이미 이러한 기능이 포함되어있을 가능성이 있습니까?

    하지만 Facebook 친구 DB를 MySQL에 덤프하면 한 달에 한 번 결과를 얻을 확률이 높습니다.

    계산을 병렬로 실행하여 처리 속도를 높일 수 있습니다. 따라서 NoSQL 데이터베이스 나 Apache Hadoop을 살펴볼 수 있습니다.

    그러나 준비, 순간 :

    +0

    thx wemu, hadoop을 읽었지만 다른 것은 있지만 여전히 mysql을 noSQL 형식으로 변환하는 방법을 이해하지 못하므로 다른 해결책이있을 수 있기를 바랍니다. D – ari

    +0

    접근 방식이 매우 다르다는 것은 매우 사실입니다. 그러나 그것은 달에 착륙하지 않습니다. SQL을 이해할 수 있다면 NoSQL 데이터베이스에서 일어나는 일들이 너무 힘들지 않을 것입니다. 먼저 얼마나 많은 데이터가 있는지 조사 할 것입니다. '많이'조차도 MySQL에 쉽게 들어갈 수있는 단지 몇 GB의 데이터를 의미 할 수 있습니다. 수백만 개의 행으로 "그룹화"를 수행해야하는 경우 속도를 위해 Map/Reduce를 고려하십시오 (일종의 무차별 '그룹화'). – wemu

    관련 문제