FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Nykomling
|
Oi!
Sitter och utvecklar en applikation som använder en tjänst från tredjepart. vad jag behöver göra är att på något sätt koppla ihop vår databas med deras och lurar lite på vilket tillvägagångssätt som är att föredra... Bakgrundsinfo: Vår databas innehåller användare som är indelade i olika kategorier och typer. Detta görs med hjälp av många-till-många relationer. Användarna kan med hjälp av extern applikation lägga till uppgifter/data (filer) till sitt konto. Detta sparar i tredjeparts databas. Jag har ingen möjlighet att påverka databasstruturen hos tredjepart. Enda infon som finns i båda systemen är ett unikt användar-id (som är samma i båda systemen för varje användare). Jag behöver nu koppla ihop systemen och söka/filtrera i dem... En sökning i vårt system är inga problem, men när det ska kopplas till tredjeparts så blir det lätt väldigt många querys (en för varje resultatträff i vårt). Två scenarion för att lösa ovanstående: 1. Skapar ett cron-jobb som med jämna mellanrum kollar upp vad som förändrats i tredjeparts databas och speglar infon i vår. 2. Vid varje query hämtar jag ut allt ur tredjeparts databas och gör till objects eller arrays och jämför sedan dessa med query-resultat i vår databas innan output. Jag ser flera problem med båda lösningarna. Den första speglar infon (blir väldigt mycket data att spegla, trög query, systemet uppdateras inte on-the-fly). Den andra inbegriper en query som hämtar ut alla rader ur tredjeparts databas. Detta resultat riskerar att bli väldigt stort. Hur påverkar detta performance? Vilket är att föredra? Finns det andra sätt som jag inte tänkt på? För och nackdelar med de olika lösningarna? Sjukt tacksam för all input! /youhann |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Flitig postare
|
Jag misstänker den bästa lösningen är att spegla via ett cron-jobb. Om du ska köra en massa queries för att hämta/jämföra information direkt så blir det en tyngre belastning för servern - tänk sedan om det är flera användare som begär samtidigt eller nästan samtidigt.. det växer rätt rejält då.
Med lösning 2 och om tredjepartsservern är trög eller nere då blir det en ännu längre fördröjning - vilket man slipper om det är speglat och sköts i bakgrunden. |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Supermoderator
|
Jag röstar också på spegling med cron. Kanske bara köra en gång varje natt om det inte är nödvändigt med den allra senaste uppdateringen. Hur ofta ni ska köra beror dels på mängden data och dels på hur pass viktigt det är med att allt är up to date.
__________________
Full-stack developer, free for smaller assignments |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Nykomling
|
Ye, lutar mot cronjobb....
Kanske bör tillägga att jag inte har direkt access till den externa databasen... Tack för input! |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Supermoderator
|
Citat:
__________________
Full-stack developer, free for smaller assignments |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Klarade millennium-buggen
|
Vad vill du egentligen göra, att söka och filtera är inget användningfall, utan en teknisk beskrivning av vad du gör.
Det är normalt en dålig idé att dubbellagra information i två databaser, det kallas redundans och bör undvikas. |
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Supermoderator
|
Citat:
__________________
Full-stack developer, free for smaller assignments |
||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Klarade millennium-buggen
|
Vad jag syftar på är att det är viktigt att tänka igenom vad och hur systemet ska användas, då visar det sig troligen att man inte behöver dubbellagra info, det har jag sett vid flera tillfällen....
Tänk före, och tänk stort... |
||
![]() |
![]() |
Svara |
|
|