모든 코드는 고정 길이의 문자열로 2 백만 개의 코드를 저장해야합니다. 모든 코드에는 사용 된 코드를 나타내는 'used'라는 부울 속성이 있습니다. 또는 아닙니다 (!). 코드의 양은 영원히 동일 할 것이며 (코드 생성 없음, 삭제 코드 없음, 업데이트 코드 없음) 유일한 업데이트 동작은 기존 코드의 사용 된 속성에 대한 것입니다.빠른 액세스를 위해 데이터베이스에 200 만 개의 문자열을 저장하는 방법
사용자가 웹 양식에 코드를 입력 할 때마다 해당 코드를 검색하고 해당 코드가 사용되었는지 확인하고 사용하지 않았 으면 사용 된 것으로 표시해야합니다.
코드를 입력하는 사용자가 많을 것입니다 (동시에 최대 50 개까지, 그게 제게는 제비 뽑기입니다!) 그래서 제 웹 응용 프로그램을 느리게 만드는 것이 좋은 방법이 될지 궁금합니다.
포스트 그레스 (내가 가장 좋아하는 DBMS)를 사용하면 이것이 가능합니까? 포스트 그레스의 특징은 무엇입니까? 지수?
nosql에서 가장 잘 수행되는 작업입니까? 아마 redis?
클라우드 서버 (랙 스페이스)를 사용할 것입니다. 어느 정도의 숫양을 넣어야합니까? 데이터베이스에 다른 일이 생기 겠지만 비교의 중요성은 없습니다. 나는 1GB를 추측하고있다.
다른 어떤 것들을 조사해야합니까?
나를 위해 어떤 연구를하고 싶지는 않지만이 문제를 자세히 조사 할 수있는 몇 가지 지침이 필요합니다.
감사합니다.
나는 그렇게 할 것입니다! [Postgres docs] (http://www.postgresql.org/docs/9.1/static/ddl-constraints.html)에 따르면 : _ 고유 제한 조건을 추가하면 사용 된 열 또는 열 그룹에 고유 한 btree 인덱스가 자동으로 만들어집니다 constraint_에서. 내 코드가 모두 다르기 때문에 모든 것입니다! 감사합니다 :) –
더 빠른 HOT 업데이트를 사용할 수 있도록 기본값보다 100 % 작은 fillfactor로 해당 테이블을 정의해야합니다. 그게 내 테스트에서 30 배 정도 빨리 달릴 수 있습니다. 사용 된 플래그를 인덱싱하지 마십시오. 그냥 코드에. 또한 별도의 SELECT를 사용하여 코드의 현재 상태를 테스트하지 마십시오. 'UPDATE ... WHERE code = x AND NOT used_flag'. 영향을받는 행 수를 확인하여 플래그가 설정되어 있는지 확인할 수 있습니다. – kgrittn
팁 주셔서 감사합니다! 한 가지, [CREATE INDEX doc page] (http://www.postgresql.org/docs/9.1/static/sql-createindex.html)는 _B-trees가 기본 fillfactor 인 90을 사용한다고 말합니다. 포스트 그레스는 정말 내 인생을 더 단순하게 만들고 싶어합니다. –