2014-06-23 1 views
0

추적 할 항목이 20,000 개 있습니다. 이름, 높이, 가중치, 배정 된 ID 및 비용은 모두 동일한 속성을가집니다 (이는 단지 예일뿐입니다). 이름이나 할당 된 ID와 같은 특정 속성은 절대 변경되지 않습니다. 다른 속성은 어떤 경우에는 빠르게 (시간당 5-10 회), 다른 경우에는 드물게 (일주일에 한두 달에 1-2 회) 바뀝니다. 데이터베이스의 모든 변경 사항을 추적하여 변경 사항에 대한 분석을 수행 할 수있는 방법이 필요합니다.데이터베이스에서 20,000 개의 항목에 대한 데이터 변경 저장 방법

이제 데이터베이스에 대한 경험이 거의 없습니다. 나는 전에 이런 양의 정보를 다뤄 본 적이 없으므로 CSV 파일로 막 얻었습니다. 또한, 나는 데이터를 검색하는 코드에 python을 사용하고 있으며이를 사용하여 데이터를 분석 할 것입니다. 따라서, 나는 파이썬과 함께 사용하기가 꽤 쉬운 sqlite가 최선의 선택일지도 모른다고 생각했다. 나는 각 항목에 대한 테이블을 만들 수 있고 속성이 열이고 변경 사항이 각 행에있을 것이라고 생각했습니다. 그러나, 나는이 방법을 사용하는 것이 훨씬 더 효율적이라고 생각한다.

누군가가이 데이터를 저장하는 가장 좋은 방법을 설명하여 분석을위한 정기적 인 검색이 너무 어려울 수 없다면 정말 감사 할 것입니다.

또한 파이썬에서 이러한 유형의 데이터에 대한 데이터 분석을 수행하는 데 필요한 리소스를 알려 주시면 큰 도움이 될 것입니다. http://www.sqlalchemy.org/

문서는 a fairly comprehensive tutorial 포함하는 데이터베이스 작업뿐만 아니라에 대한 방법과 같은 관련된 높은 수준의 개념을 통과 : 간단한 데이터베이스 물건에 대한 사전

+0

잘, 20000 개의 항목이 많지 않습니다. 한 시간에 5 번에서 10 번씩 데이터를 업데이트하는 것도 특별한 일이 아닙니다. – Raptor

+0

그래,하지만 그게 정말 도움이되지 않습니다. 내가 말했듯이, 나는 데이터베이스에 익숙하지 않으며 그것을 깨닫지 못했다. 20,000 개의 테이블을 만드는 것이 좋은 방법 일 것이라고 말하고 있습니까? –

+0

20000 개 항목! = 20000 개의 표. 모든 DBMS가 데이터를 잘 처리 할 수 ​​있습니다. 기본 키 & 색인 – Raptor

답변

0

에서

덕분에, SQLAlchemy의 당신의 친구입니다 테이블을 파이썬으로 직접 디자인하고 작업하십시오.

다음은 코드에서 테이블을 정의하는 방법을 보여주는 샘플입니다. 그런 다음 SQLAlchemy는 데이터베이스 관리를 담당하게되며 일반적인 Python 개체로 작업 할 수 있습니다.

>>> from sqlalchemy import Column, Integer, String 
>>> class User(Base): 
...  __tablename__ = 'users' 
... 
...  id = Column(Integer, primary_key=True) 
...  name = Column(String) 
...  fullname = Column(String) 
...  password = Column(String) 
... 
...  def __repr__(self): 
...  return "<User(name='%s', fullname='%s', password='%s')>" % (
...        self.name, self.fullname, self.password) 

더하기,이 튜토리얼은 SQLite 데이터베이스를 사용합니다!

두꺼운 일이 어떻게 진행되고 있는지 더 잘 이해할 수 있도록 데이터베이스 작업을 할 것을 권장합니다. 당신은 당신이 최선을 다하고 어떤 환경 언급하지 않았지만, 다른 선택의 여지는 SQLite 데이터베이스 탐험있다 : 등

업데이트, 리눅스, 윈도우에서 SQLite Database browser에서 sqlite3을 님으로

질문의 다른 부분은 database normalization입니다.

(기본) 정규화에 대한 일반적인 개념은 많은 다른 테이블을 반복하지 않고 유사한 정보를 한 곳에 모아야한다는 것입니다.

:

당신이 제공 한 간략한 설명에서

, 나의 접근 방식은 모든 변경 사항을 나열합니다 추적하고있는 각 항목에 대한 ID와 이름을 저장하는 것 Widgets 테이블, 다음 Dimensions 테이블을 것

+-----------+----------------------+--------+--------+-----+ 
| widget_id | change_time  | height | weight | ... | 
+-----------+----------------------+--------+--------+-----+ 
|   0 | 05-12-2014 18:30:58 |  4 |  10 | ... | 
|   0 | 06-22-2014 12:32:46 |  4 |  12 | ... | 
|   0 | 06-23-2014 01:02:00 |  6 |  12 | ... | 
|       ...       | 

변경이 발생할 때마다 Dimensions 테이블에 항목을 추가합니다.그런 식으로 과거의 어떤 시간에 대한 치수를보고 시간 경과에 따른 변화를 분석 할 수 있습니다.

+0

을 링크에 대해 잘 정의했는지 확인하십시오. 확인해 보겠습니다. 나는 리눅스 btw입니다. –

+0

완벽 해 보인다! 지금, 아직 튜토리얼을 살펴 보지 못했고 아마도 거기에 데이터베이스 구조를 디자인하는 것에 관해 논의했을 것입니다. 그러나 제 접근 방식이 가능할지라도 궁금 해서요? –

+0

고맙습니다. 나는 필요한 정보를 찾기 위해 가장 어려운 부분은 올바른 검색어를 아는 것이라고 생각합니다. 나는 규범화를 살펴볼 것이다. –