복붙노트

[RUBY-ON-RAILS] 레이크 dB : 스키마 : 부하 대 마이그레이션

RUBY-ON-RAILS

레이크 dB : 스키마 : 부하 대 마이그레이션

아주 여기에 간단한 질문 - 응용 프로그램이 더 복잡 얻고 우리가 많은 청소기 레이크 데시벨이있는 경우로 마이그레이션 느린 얻을 성가신 수있는 경우 : 스키마 대신 전화 부하를 왜 마이그레이션 모든 존재합니까?

위의 대답은 마이그레이션은 다음 응용 프로그램은 더 복잡하고 갈퀴 DB를수록 버전 관리 (데이터베이스의 변경 단계적 기록)에 사용되는 경우 : 스키마 : 부하가 더 대신 그들의을 유지하기 위해 계속 할 수있다 주요 기능?

스키마 : DB 레이크 다음이 질문에 대한 답변에서 그것을 사용하는 경우 부하가 프로덕션 서버에서 데이터를 삭제하는 것은 매우주의해야합니다.

해결법

  1. ==============================

    1.마이그레이션 앞으로 제공하고 뒤로 단계는 데이터베이스로 변경됩니다. 프로덕션 환경에서 증분 변경이 전개함에 동안 데이터베이스에해야 마이그레이션 롤백 안전 장치로이 기능을 제공합니다. 스키마 : 당신이 갈퀴 DB를 실행하면 프로덕션 서버에 부하를, 당신은 모든 생산 데이터를 삭제하게 될 겁니다. 이것은으로 얻을 수있는 위험한 습관이다.

    마이그레이션 앞으로 제공하고 뒤로 단계는 데이터베이스로 변경됩니다. 프로덕션 환경에서 증분 변경이 전개함에 동안 데이터베이스에해야 마이그레이션 롤백 안전 장치로이 기능을 제공합니다. 스키마 : 당신이 갈퀴 DB를 실행하면 프로덕션 서버에 부하를, 당신은 모든 생산 데이터를 삭제하게 될 겁니다. 이것은으로 얻을 수있는 위험한 습관이다.

    그 존재는 내가 가끔 "붕괴"마이그레이션에 괜찮은 방법입니다 믿는다 고 말했다. 이것은 (당신의 schema.rb 파일과 매우 유사) 단일 마이그레이션로 대체 된 마이그레이션을 삭제하고이 변경 사항을 반영하기 위해 schema_migrations 테이블을 갱신 수반한다. 이 일을 할 때 매우 조심! 당신이 조심하지 않으면 당신은 쉽게 당신의 생산 데이터를 삭제할 수 있습니다.

    보조 노트로서, 나는 강력하게 마이그레이션 파일에 데이터 생성을 넣어 결코해야한다고 생각합니다. seed.rb 파일이 사용 또는 사용자 정의 레이크 또는 배포 작업을 할 수 있습니다. 마이그레이션 파일로이 퍼팅 데이터 사양 데이터베이스 스키마 사양을 혼합 및 마이그레이션 파일을 실행할 때 충돌이 발생할 수 있습니다.

  2. ==============================

    2.그냥 오래 전 내가 기대했던 대답을 보지 못했다이 게시물에, 우연히 발견했다.

    그냥 오래 전 내가 기대했던 대답을 보지 못했다이 게시물에, 우연히 발견했다.

    레이크 dB : 스키마 : 부하가 당신이 생산 시스템을 넣어 처음에 좋은 곳입니다. 그 후 당신은 일반적으로 마이그레이션을 실행해야합니다.

    당신이 좋아하는 때마다 스키마가 당신이 당신의 마이그레이션을 정리에도 생산에 다른 기계를 넣어 모든 정보를 가지고 있기 때문에 이것은 또한, 당신의 마이그레이션을 청소를하는 데 도움이됩니다.

  3. ==============================

    3.마이그레이션은 너무 DB에 데이터를 추가 할 수 있습니다. 하지만 DB : 스키마 : 부하는 스키마를로드합니다.

    마이그레이션은 너무 DB에 데이터를 추가 할 수 있습니다. 하지만 DB : 스키마 : 부하는 스키마를로드합니다.

  4. ==============================

    4.마이그레이션이 롤백 및 추가 기능을 제공 할 수 있기 때문에. 당신은 스키마 변경의 일환으로 일부 데이터를 수정해야하는 경우 예를 들어, 당신은 마이그레이션으로 그렇게해야합니다.

    마이그레이션이 롤백 및 추가 기능을 제공 할 수 있기 때문에. 당신은 스키마 변경의 일환으로 일부 데이터를 수정해야하는 경우 예를 들어, 당신은 마이그레이션으로 그렇게해야합니다.

  5. ==============================

    5.다른 ORM의의 사용자로서, 항상 레일은 '동기화 및 업데이트'기능을하지 않았다고 나에게 이상한 것 같았다. 즉, (전체, 최신의 스키마를 나타냄) 스키마 파일을 사용하여, 기존의 DB 구조를 이동하고 필요에 따라 / 제거 테이블, 열, 인덱스를 추가 할 수 있습니다.

    다른 ORM의의 사용자로서, 항상 레일은 '동기화 및 업데이트'기능을하지 않았다고 나에게 이상한 것 같았다. 즉, (전체, 최신의 스키마를 나타냄) 스키마 파일을 사용하여, 기존의 DB 구조를 이동하고 필요에 따라 / 제거 테이블, 열, 인덱스를 추가 할 수 있습니다.

    나에게이, 훨씬 더 강력한 것조차 아마도 조금 느린 경우.

  6. ==============================

    6.이미 주석으로 게시,하지만 여기 dB / schema.rb 파일의 주석을 넣어 더 나은 느낌이있다 :

    이미 주석으로 게시,하지만 여기 dB / schema.rb 파일의 주석을 넣어 더 나은 느낌이있다 :

    # Note that this schema.rb definition is the authoritative source for your
    # database schema. If you need to create the application database on another
    # system, you should be using db:schema:load, not running all the migrations
    # from scratch. The latter is a flawed and unsustainable approach (the more migrations
    # you'll amass, the slower it'll run and the greater likelihood for issues).
    #
    # It's strongly recommended that you check this file into your version control system.
    

    사실, 내 경험은이 schema.rb 파일 자식에 아닌 마이그레이션 파일을 넣어 더 나은 것입니다 ...

  7. ==============================

    7.레이크 dB : 마이그레이션 설정 데이터베이스의 테이블. 마이그레이션 명령을 실행하면 모든 루비 파일을 DB / 마이그레이션 / 보면 가장 오래된로 시작을 실행합니다. 각 마이그레이션 파일 이름의 시작 부분에 타임 스탬프가있다.

    레이크 dB : 마이그레이션 설정 데이터베이스의 테이블. 마이그레이션 명령을 실행하면 모든 루비 파일을 DB / 마이그레이션 / 보면 가장 오래된로 시작을 실행합니다. 각 마이그레이션 파일 이름의 시작 부분에 타임 스탬프가있다.

    달리 레이크 dB : 마이그레이션이 아직 실행하지 않은 실행 마이그레이션, 레이크 dB : 스키마 : 부하 하중 이미 데이터베이스 schema.rbinto / DB에서 생성 된 스키마.

    레이크 데이터베이스가 여기에 명령에 대해 더 많은 것을 알 수 있습니다.

  8. from https://stackoverflow.com/questions/5905287/rake-dbschemaload-vs-migrations by cc-by-sa and MIT license