2011-03-01 2 views
0

나는 100k + 행을 저장하는 다양한 테이블을 가진 mysql 데이터베이스를 가지고있다. 필자는 데이터베이스에서 빠르게 읽을 수있는 언어를 원했기 때문에 다양한 테이블의 데이터를 대조하여 로컬 객체/데이터 구조에 저장할 수있었습니다. 그런 다음 대부분의 복잡한 처리를 로컬로 수행 할 것이고,이를 최적화 할 수도 있습니다.빠른 DB 읽기와 빠른 로컬 데이터 구조 조작을위한 최상의 프로그래밍 언어

이것은 주로 매일 삭제되는 데이터 분석 프로젝트 용입니다. 어떤 친구들은 Ruby 나 Python을 추천했지만 어느 것도 알지 못해 도약을하기 전에 두 번째 의견을 원했습니다.

답변

1

여기서 문제의 일부는 db와 응용 프로그램 계층 코드 간의 대기 시간입니다. 데이터베이스를 쿼리 할 위치에서 DB 서버에 Ping을 수행하십시오. 모든 작업에 소요되는 시간을 두 배로 늘리십시오. 그 시간에 함께 살 수 있다면, 괜찮습니다. 그러나 당신은 sprocs 나 DB와 가까운 곳에있는 어떤 것에 조작을 쓰는 것이 나을지도 모르며, 응용 프로그램 코드를 사용하여 그것을 사용자에게 보여줄 수 있습니다.

0

Db는 데이터를 가져 오는 측면에서 대부분 병목이 될 것입니다.

"복잡한 처리"가 어떤 언어와 어떤 성능에서 가장 큰 차이를 만들지에 따라 달라집니다.

쉽게 시작하고 시작할 수 있다는 점에서 파이썬과 루비는 빠르게 시작하여 뭔가 작동하도록합니다. 비트는 컴퓨팅에 대한 다른 것들보다 느립니다. 하지만 그때조차도 네이티브 컴파일러 언어와 큰 차이가 있음을 알기 전에 둘 다 많은 것을 처리 할 수 ​​있습니다.

+0

수출 LD_LIBRARY_PATH =는/usr/lib64에/mysql을 : $ LD_LIBRARY_PATH MATLAB -nodesktop MEX -I는/usr/포함/mysql을 -L는/usr/lib64에/mysql을 -lmysqlclient mysql.cpp – ivrin

0

100,000 개의 레코드가 실제로 그렇게 많지 않습니다. 충분한 양의 RAM이 있고 데이터에 여러 개의 로컬 "인덱스"가 있으면 복사본이 아닌 동일한 개체를 참조하기 때문에 로컬로 캐시하고 걱정없이 매우 빠르게 액세스 할 수 있습니다. Ruby와 Python은 모두 해석 언어이고 연산 작업은 컴파일 된 언어보다 느리지 만 실제로는 응용 프로그램을 실행하면 CPU 시간 중 일부만 코드에 사용되고 대부분이 내장 라이브러리에 사용됩니다 에 호출합니다. 이것은 종종 고유 구현이며, 따라서 컴파일 된 코드만큼 빠릅니다.

루비 또는 파이썬이 제대로 작동하고 테스트 후에도 실제로 성능이 충분하지 않다고해도 이들 중 하나에서 Java 나 .NET 또는 C++과 같은 더 빠른 언어로 변환 할 수 있습니다. 당신이 실제로 이미 힘든 작업을했기 때문에 실제로 처음부터 다시 쓰는 것보다 훨씬 빠릅니다.

다른 옵션 중 하나는 메모리 내 데이터베이스에 모든 데이터를 캐시하는 것입니다. 귀하가해야 할 분석의 역동성에 따라 귀하의 상황에서 잘 작동 할 수도 있습니다. SQLite는이를 위해 아주 잘 작동합니다.

또한 데이터를 로컬에서 캐시 한 다음 로컬 캐시에서만 작동하기 때문에 데이터베이스를 호출하는 성능이 적용되지 않습니다.

관련 문제