4

PHP Laravel을 통해 램프 스택 API application을 구축했습니다. 현재 로컬 mySQL 인스턴스를 사용하고 있습니다. 주로 AngularJS에서보기를 구현했습니다.정식 데이터베이스 - Firebase와 결합

Firebase를 사용하려면 가능한 한 실시간에 가까운 MySQL의 신뢰할 수있는 저장소와 Firebase에있는 관련 데이터를 동기화해야합니다. 즉, 실시간이 아니고 Firebase를 사용하지 않는 앱의 다른 부분도 최근에 시스템에 입력 된 최신 콘텐츠를 제공 할 수 있습니다.

Firebase은 본질적으로 클라우드의 noSQL 데이터베이스라는 것을 알고 있습니다. 내 질문은 - 레코드베이스 (mySQL)에 파이어 폭스의 표준 버전을 동기화하는 래퍼 또는 수단을 작성하려면 어떻게해야합니까?

업데이트 대답 - 우리의 최종 결정을 -

우리는이에 대해 결정 옵션으로 중포 기지 죽겠다, 우리가 쉽게로 매우 낮은 대기 시간 연결을 동일한 서버에 socket.io 인스턴스를 가질 수 mySQL을 사용하여이 둘을 동기화 상태로 유지할 수 있습니다. localhost에 자원과 엔드 포인트가있을 수있는 경우 웹을 탐색 할 필요가 없습니다. 또한 인터넷에 연결하지 않고도 앱을 실행할 수있는 옵션을 제공합니다. 이는 대기업에 구내 장치를 판매하는 경우 중요합니다.

Firebase와 같은 noSQL 동기화 플랫폼은 실제로 세미 실시간으로 더 빠르게 읽고 쓰는 임시 저장소입니다. 그들이 "우리는 또한 당신을 위해 모든 것을 지속합니다"사업에 착수하려고 시도한다면 - 그것은 훨씬 더 많은 집행이 요구되는 완전히 다른 질문입니다.

mySQL과 Firebase 간의 궁극적 인 일관성에 대한 보장은 문제를 예방하기 위해 우선적으로 중요합니다. 또한 RDMS는 Google 애널리틱스에 필수적입니다. 분석/데이터 매핑에서 많은 데이터 중대한 문제를 공격하는 유일한 방법입니다. 대부분의 세상에서 여전히 mySQL과 같은 RDMS를 사용하고 있습니다. 아마존 RDS와 구글 클라우드 SQL을 통해서도 매우 안정적이다.

Firebase가 실제로 해결해주는 실시간 동기화를 확장 할 수있는 특별한 문제는 없습니다. 다른 오픈 소스 프레임 워크는 아직 해결하지 않았습니다. 그들의 JS lib 실제로 (오프라인 START) 오프라인 시나리오를 처리하는 경우 우아하게, 나는 그것을 고려했을 수도 있지만 아직 그것을하지 않습니다.

그래서 YMMV입니다. 그러나 우리의 구체적인 경우 위에서 설명한 이유 때문에 Firebase를 고려하지 않았습니다.

+0

건축술은 명확하다. 그러나 나는 당신이 무엇을 요구하고 있는지 확신하지 못합니다. 이 아키텍처의 유효성을 검사하고 있습니까? 또는이 동기화 코드 작성시 권장 사항을 찾으십니까? 둘 다 꽤 폭 넓은 주제이며 StackOverflow에 적합하지 않습니다. Firebase에 보관하려는 mySQL 데이터 구조 중 일부를 공유하면 더 효과적으로 도움을받을 수 있습니다. –

+0

@FrankvanPuffelen 여기에 색을 추가하려고합니다. 일부 속성과 단계로 구성된 체크리스트가 mySQL에 저장되어 있다고 가정 해보십시오. 단계는 다른 테이블에 저장됩니다. 누군가가 Firebase에서이 체크리스트를 업데이트하면 어떻게 mySQL을 동기화 할 수 있습니까? Firebase는 성능상의 이유로 사용하기를 원하며 시스템의 마스터 스토어가 아닙니다. 따라서 거의 실시간 동기화가 필요합니다. 대체 옵션은 Firebase 호출이있을 때 항상 데이터를 mySQL에 동기화하는 호출을하는 것입니다.하지만 성능이 크게 떨어지는 것처럼 보입니다. 클라이언트 측이 아닌 사람들을위한 우아한 방법이 있습니까? –

+1

업데이트 : 저는 두 데이터베이스를 결합하려는 이유가 궁금합니다. 즉시 mySQL의 상태를 확실히 업데이트하는 것이 더 간단 해 보입니다. 당신도 똑같은 결론에 도달했다고 들었습니다. –

답변

3

전체 주제가 너무 넓어서 간단한 답변을 제공하기에는 너무 광범위합니다.

난 당신이 코멘트에서 제공하는 유스 케이스에 충실 것 :

당신이 몇 가지 속성으로 구성 MySQL의에 저장된 체크리스트 및 단계의 집합을 가지고 상상해보십시오. 단계는 다른 테이블에 저장됩니다. 누군가가 Firebase에서이 체크리스트를 업데이트하면 어떻게 mySQL을 동기화 할 수 있습니까?이 사용 사례에 대한 중포 기지와 MySQL을 결합 주장하는 경우

, I 것 :

  • var ref = new Firebase('https://my.firebaseio.com/workqueue') 클라이언트 푸시 a를 가지고 :

    1. 작업 대기열로 중포 기지를 설정 작업 항목을 Firebase에 넣으십시오 : ref.push({ task: 'id-of-state', newState: 'newstate'})

    2. 다음을 설정하는 (nodejs) 서버를 설정하십시오 :

      ,
      1. 모니터 작업 큐 (ref.on('child_added')는

    이 작업 큐의 예를 들어이 GitHub의 프로젝트를 참조하십시오 대기열에서 작업을 제거 MySQL 데이터베이스에서 항목을 업데이트 Firebase의 위에 : https://github.com/firebase/firebase-work-queue

  • +1

    위대한 답변 프랭크! 하지만 Firebase와 같은 현대의 실시간 플랫폼을 MySquirrel과 같은 90 년대 백엔드의 메시지 대기열로 전환하려고합니다. 누군가 내 머리에 총을 겨누면. – Kato

    +0

    @Kato 필자는 mySQL이 구체적으로 필요함을 확신합니다. 그것은 나의 선호에 관한 것이 아니라 데이터의 구조화 된 분석을 필요로하는 고객 및 선재 분석의 것입니다. 이 질문과 관련이없는 긴 이야기입니다. –

    +0

    @ frank-van-puffelen 내가 대답 한 답변에 감사드립니다. 그것은 확실히 작동 할 것입니다. 불행히도 Firebase를 사용하지 않는 데에는 여러 가지 이유가 있습니다. 이는 제 대답에서 업데이트되었습니다. 이것은 매우 광범위하고 중요한 문제에 대해 조금 더 고려한 후에옵니다. –