programing

Maria를 사용한 워터라인/Sails.js 대량 삽입 및 삭제DB

procenter 2022. 12. 29. 21:41
반응형

Maria를 사용한 워터라인/Sails.js 대량 삽입 및 삭제DB

Sails.js 앱에 테이블이 있습니다.auctionsBattle.net API에서 마지막으로 덤프된 시점에서 수신된 데이터가 포함됩니다.

따라서 새로운 덤프가 생성될 때마다realm도착합니다. 이 행과 관련된 모든 행을 클리어해야 합니다.realm새로운 것을 삽입합니다.

어느쪽이든 할 수 있습니다.

  • all-at-an-time(단일 쿼리 포함)destroy()덤프 자체가 있는 다른 것);
  • 또는 소분할(그것들에 의해 분류됨)item,그리고나서destroy()모든 레코드의 취득realm「아이템을 삽입하고 나서, 새로운 것을 삽입합니다.」

지금 하고 있는 것은async.forEachOfSeries위에서 설명한 바와 같이 작은 배치이지만 현재 로드(작업 실행 시마다 45,000개의 레코드가 삽입됨)에서는 견딜 수 없을 정도로 느립니다.또한 이 작업은 갱신할 필요가 있는 경우에는 고려되지 않습니다.item툴팁 레코드한 번에 삽입하려고 하면 Node.js가 페이징을 시작하여 행업하거나 MariaDB가 Waterline에서 허용하는 시간보다 오래 걸립니다.

어떻게 하면 더 확장적으로 접근할 수 있을까요?그럴 것이다async.queue또는async.cargo작동합니까?

한 테이블의 모든 행을 교체한다고요?다음과 같이 합니다.

  1. CREATE TABLE new LIKE real;
  2. 로드new새로운 데이터로
  3. RENAME TABLE real TO old, new TO real;
  4. DROP TABLE old;

다운타임이 없는 스왑을 실현합니다.LOAD의 효율성에 대해서는 걱정할 필요가 없습니다(스텝 2단계).

(이 MySQL/MariaDB 코드를 sails.js 등으로 변환하는 연습을 독자에게 맡깁니다.)

언급URL : https://stackoverflow.com/questions/32388726/waterline-sails-js-mass-insertion-and-deletion-with-mariadb

반응형