도움이 필요하다! 숙제가 풀리지 않아 철의 한계에 부딪혀 - 페이지 12

 
komposter :


전체 데이터베이스가 10줄에 맞습니까? 모든 파일을 함께
 
Candid :

그러나 시퀀스는 서로 독립적입니까? 그렇다면 한 번 로드된 시퀀스의 날짜에 대해 한 번에 주기를 만드는 것이 불가능한 이유는 무엇입니까? 그런데 여기에서는 효과적인 순환 알고리즘으로 전환하는 것이 가능할 수도 있지만 이것은 운이 좋은 것입니다. 백만 x 백만 차원이 유지되고 파일을 한 번 읽습니다.

물론 일반적으로 다음 반복에서 단계 수가 동일하게 유지되는(즉, 계산이 진행됨에 따라 검색 영역이 좁아지지 않는) 문제는 특별히 강건해 보이지 않습니다. 그러나 이것은 물론 주관적입니다.

캐시 제한을 초과하면 이러한 차원에 대한 재귀가 떨어집니다.
 
유사한 트랜잭션 시퀀스가 많이 있으며 각 시퀀스는 시간별로 정렬됩니다.

Сделки в разных последовательностях разные, по времени распределены неравномерно (и в каждой последовательности по своему). Сделок разное количество. Но все - в интервале от Даты1 до Даты2.

작업은 M분 단위로 D1에서 D2로 이동하고(특히 모든 시퀀스의 트랜잭션 포인트별로) K 기준에 따라 다른 것보다 더 나은 시퀀스를 찾는 것입니다(별도 가장 좋은 순서를 찾고 기준에 따라 전체 세트를 정렬하고 상위 10개를 표시하지만 이것은 선택 사항이며 아직 필수는 아닙니다).

기준 K는 해당 시퀀스의 X 이전 트랜잭션을 기반으로 계산되며 계산에서 X 트랜잭션 각각에 대한 거의 모든 정보가 사용됩니다(예: 이익만 있으면 충분하지 않음).

여기에서 시작했어야 했습니다.

다음을 올바르게 이해했습니까?

1) 20GB 파일은 시간순으로 정렬된 약 백만 개의 시퀀스로 구성됩니다.

2) 각 시퀀스의 크기는 다를 수 있으며 시퀀스에 포함 된 트랜잭션 수에 따라 다릅니다.

3) 평균적으로 시퀀스의 크기는 20/10^6 = 20Mb입니다. 하나의 시퀀스를 완전히 다운로드한다고 보장할 수 있습니까?

4) 계수 K는 주어진 시퀀스 내의 트랜잭션에만 의존합니다.

5) 각 시퀀스에 대해 K(10^6개의 총점)를 찾고 상위 10개를 선택해야 합니다.

그리고 시퀀스 사이의 거리 값으로 다른 파일을 생성하면.

1) 다운로드할 수 있는 시퀀스의 수를 확인하고 그 사이의 거리를 합산합니다(합의 중간 값 유지).

2) 파일에서 RAM으로 이 거리를 읽습니다.

3) 각 시퀀스에 대해 검색 알고리즘 K를 실행합니다(1단계에서 계산된 부분합을 저장하기 때문에 시퀀스의 시작 위치를 알고 있습니다)

4) 시작점 1 다시 약간 앞으로 이동

상위 10위의 경우:

n - K의 총 값, m - 최고 수.

1) 모든 K를 찾을 수 있습니다. 그런 다음 힙 데이터 구조를 사용하여 가장 좋은 것의 필요한 수를 선택합니다(힙 가져오기 O(n), 최상의 O(log n) 곱하기 m, 메모리 공간 - n) 선택

2) 필요한 수 - m 조각(예: 10)을 즉시 계산하고 정렬하고 이진 검색을 사용하여 나머지 K의 삽입점을 찾습니다.

(1차 정렬 O(m*log m), 삽입 검색 O(log m) 횟수(nm), 삽입 O(1), 메모리 공간 - m)

 
Urain :
캐시 제한을 초과하면 이러한 차원에 대한 재귀가 떨어집니다.
기존 재귀에서는 캐시 크기가 고정되어 있습니다.
 
ALXIMIKS :

3) 평균적으로 시퀀스의 크기는 20/10^6 = 20Mb입니다. 하나의 시퀀스를 완전히 다운로드한다고 보장할 수 있습니까?

그건 그렇고, 예, 시퀀스 팩을 즉시 다운로드할 수 있습니다.
 

일반적으로 본질을 파악하지 못하고 무엇이 필요하고 무엇을 제공하는지 (((

  А потом "нужная дата" сдвигается на точку закрытия сделки из выбранной последовательности и алгоритм повторяется.

1gb = 1000mb = 10^6kb이기 때문에 예 20/10^6 = 20kb

 
YuraZ :

우리가 SQL을 향해 간다면


  • 나를 위한 비교적 새로운 환경(밀접하게 작동하지 않고 기본 쿼리만);

이것은 개발 단계에서 상당히 느릴 수 있습니다.

이 옵션을 선택하면 저장 프로시저를 사용하여 모든 비즈니스 논리를 빌드하는 것이 좋습니다.

전문가는 서버에 요청을 보내고 완전히 준비된 결과를 얻는 두 가지 기능만 남겨둡니다.

서버의 모든 계산

  • 단일 클라이언트 시스템(독립 실행형 버전)에 설치의 복잡성;

사실, 인터넷에서 SQL 서버를 설치하는 방법에 대한 많은 설명을 찾을 수 있습니다.

( 예를 들어 ORACL,SYBASE + CENTOS ) ORACL,SYBASE,MS SQL+WINDOWS 별도 시스템

ORACL - 배우기 조금 더 어렵습니다 - 더 적은 수의 전문가, 더 적은 문헌

MS SQL - 아마도 웹 및 기타 문헌에서 가장 많은 정보

여기에는 특별한 어려움이 없을 것입니다 - 상점의 인터넷에는 많은 설명이 있습니다. 더 많은 책이 있습니다

매개 변수의 MSSQL 2012가 ORACL에 가까워졌습니다. 이미 2014가 있습니다.

SQL + LINUX 번들의 선택은 일반적으로 산업 운영에서 선택되며 LINUX에 대한 지식이 없으면 WINDOWS를 사용하는 것이 좋습니다.

MSSQL은 볼이지만 제한은 1코어, 1GB 메모리 및 10GB 데이터베이스를 사용합니다.

나머지는 지불됩니다.

 
komposter :
...

유사한 트랜잭션 시퀀스가 많이 있으며 각 시퀀스는 시간별로 정렬됩니다.

다른 순서의 트랜잭션은 시간이 지남에 따라 고르지 않게 분포되며 각 순서에서 고유한 방식으로 분산됩니다. 거래는 다양합니다. 그러나 모든 것은 Date1에서 Date2까지의 간격에 있습니다.

작업은 M분 단위로 D1에서 D2로 이동하고(특히 모든 시퀀스의 트랜잭션 포인트별로) K 기준에 따라 다른 것보다 더 나은 시퀀스를 찾는 것입니다(별도 가장 좋은 순서를 찾고 기준에 따라 전체 세트를 정렬하고 상위 10개를 표시하지만 이것은 선택 사항이며 아직 필수는 아닙니다).

...

어딘지 모르겠어

날짜 1에서 날짜 2 사이의 모든 기준이 있습니다.

퇴비통 :

그런거야.

그리고 나서 "필요한 날짜"가 선택된 시퀀스에서 트랜잭션의 종료 시점으로 이동하고 알고리즘이 반복됩니다.

그래서 백만 번 더 =)

즉, 다음을 읽습니다.

파일을 Date1에서 Date2 까지 여러 간격으로 분할하지 않는 이유는 무엇입니까? 닫을 수 있는 작업 시퀀스가 있습니까?

 
Silent :

어딘지 모르겠어

날짜 1에서 날짜 2 사이의 모든 기준이 있습니다.

즉, 다음을 읽습니다.

파일을 Date1에서 Date2 까지 여러 간격으로 분할하지 않는 이유는 무엇입니까? 닫을 수 있는 작업 시퀀스가 있습니까?

분명히 단일 날짜 전달의 결과 중 하나는 새 날짜입니다.
 

작업이 다음과 같은 경우:

주어진 행 1 2 3 4 5 6 7 8 9

예를 들어 너비가 4인 경우 너비 내에서 일부 값(예: 최소값)을 찾으려면 전체 행을 따라 이 너비로 이동해야 합니다.

먼저 1 2 3 4 다음 2 3 4 5 다음 3 4 5 6 다음 4 5 6 7 그 다음 .... 등을 찾아야 합니다.

그런 다음 대기열 데이터 구조 에서 최소값을 유지하여 문제가 해결됩니다.

1) 4개의 스택 데이터 구조를 통해 수행하도록 제안된 mail.ru 비디오 과정에서의 구현

2) 나는 큐 데이터 구조와 데크 데이터 구조를 통해 구두로 구현을 생각해 냈습니다. 아마도 누군가가 이미 이것을 한 적이 있고 그의 이름을 따서 명명되었을 가능성이 큽니다. 찾기만 하면 됩니다.