Optimera för hastighet

Tråden skapades och har fått 13 svar. Det senaste inlägget skrevs .
1

En sak som kan vara problematiskt med FileMaker är att det inte går särskilt fort att arbeta med stora datamängder. Självklart är det så att vad man får i form av flexibilitet i FileMaker kostar i form av snabbhet jämfört med en databas med kompilerad kod för beräkningar.

Men, ni som hållit på med FileMaker länge, finns det några bra knep att få lite mer fart?

Jag försöker förstås i möjligaste mån att undvika att beräkningsfält refererar andra beräkningsfält osv. Trots det segar det jobbigt mycket när 80000 poster ska summeras på olika sätt...
Lösningen ligger på FileMaker Server 9. Jag testade att jobba med en kopia av databasen lokalt, men det påverkade inte hastigheten särskilt mycket...

Tacksam för tips!

Min erfarenhet är att filemaker behöver mycket minne, om det kan vara till hjälp, annars är det precis som du säger, att inte lägga beräkningar till varandra, det slöar ner nåt helt otroligt...
En annan sak är ju snabb disk förstås... men gott om internminne (helst mer än 4GB) verkar vara ett bra recept...

/Jenny

Nu har jag.

Problemet är inte så mycket sökningar, även om sökningar i relaterade fält kan vara långsamt. Vad som är långsamt är när FileMaker ska utföra beräkningar och sen summera relaterade fält som innehåller dessa beräkningar. Statistikfält ska vi inte tala om. Då kan man gå på lunch under tiden...

Var ska man lägga krutet på hårdvaruförbättringar? Servern? Klienterna? Förr utfördes väl allt arbete (beräkningar etc) lokalt, men det har ändrats i senare versioner?

Några metoder:

1. "Öka" hårdvaran" gör inte så mycket vad jag vet. Jag hörde för en tid sedan att FileMaker är som snabbast på desktop-datorer och inte på server-datorer (bladservrar, rackmonterade maskiner) för att FileMaker är ganska diskintensiv och desktop-maskiner skulle tydligen vara bättre på det. Jag vet inte om det är sant.

2. Nya FileMaker server skickar över mera av processandet till klienterna, vilket betyder att servern blir klar fortade och klienten får sortera upp det. Det kräver ju dock ett snabbt nätverk då mera data skickas mellan server och klient, så där kan man säkerligen lägga lite pengar och faktiskt se ett resultat.

3. Tänka annorlunda gör det - jag byggde en lösning en gång som fungerade som så att den som först loggade in i systemet på morgon automatiskt startade ett script som utförde en beräkning och lagrade värdet i ett fält. När detta jobb var klart så skedde inget samma dag när andra människor loggade in. Systemet kollade om scriptet som gjorde beräkningen redan var gjord idag och då utfördes den bara en gång. Denna beräkning hade att göra med att uppdatera en sak som ändrades ungefär dagligen förstås. Man hade även möjligheten att klicka på en knapp för att utföra beräkningen igen om man behövde.

4. Man kan flytta processorintensiva operationer till nätterna. Jag har byggt en robot i form av en MacMini åt en kund som har Applescript, FileMaker, Photoshop, Apple Remote Desktop och ett program som heter Script Timer. Den tar och processar bilder (konverterar från EPS till JPG) och sedan importeras dessa till FileMaker på morgonen klockan 07.00 varje dag. På samma sätt kan man ju göra med andra beräkningsintensiva funktioner, vid lämpliga tidpunkter startar roboten och utför beräkningar som lagras i databasen så att de inte behöver beräknas när de skall visas. Man kontrollerar och styr roboten med ARD, den behöver varken tangentbord eller skärm.

Det finns även andra plugins till Filemaker som får FileMaker att köra manus på bestämda tider, tex Events (Worqsmart) och Activator Plugin In (Troi Automatisering). I denna lösning var Script Timer bättre för jag ville köra Applescript på bestämda tider utan att behöva gå via FileMaker. Applescript kan ju köra manus i Filemaker också lätt, så...

5. En annan rolig metod är ju att använda FileMaker för vad det är bra på, mycket trevliga användargränssnitt och använda MySQL på det som MySQL är bra på, råa prestanda utan GUI.

Har man behovet så borde det inte vara speciellt svårt att exportera information från FileMaker (som tex CSV), sedan importera denna information i en MySQL-databas, skicka lite SQL-kommandon, exportera ut resultatet och sedan tillbaka in i FileMaker igen. Helt enkelt flytta hela beräkningsjobbet någon annan stans.

Detta går ju att göra eftersom Applescript kan styra både FileMaker och MySQL (via terminalen). Lägg till Script Timer som jag nämnde och en liten MacMini så kan du göra en väldans massa processande riktigt fort.

Ett experimet jag gjorde en gång för att importera en CSV-fil till en MySQL-tabell med hjälp av Applescript var att 12000 poster gick på några sekunder bara.

Om jag bara gissar mellan tummen och pekfingret så vet jag att export/import är snabbt i Filemaker (om inte alltför mycket skall indexeras) och detsamma gäller för MySQL. Så om den biten går att få utförd på några minuter (ut med data, in med data) så handlar ju frågan om hur lång tid det tar på hur fort MySQL kan utföra beräkningen ifråga. Om FileMaker tar en timme på sig och MySQL gör samma jobb (om det nu skulle vara så) på några minuter, så kan det ju lätt vara värt det.

Fick du några ideer nu?

Senast redigerat 2008-07-25 11:48

Ja, flera idéer faktiskt. Tack!

Jag kommer nog att använda en kombination av dina idéer. Till att börja med blir det ett script som utför de nödvändiga beräkningarna på de hittade posterna och sedan lagrar resultaten i lämpliga fält. Då blir det lätt att göra om beräkningarna om det skulle behövas. Summeringar bör flyta på snabbare när det inte ska utföras beräkningar i flera led.

Ett framtida steg blir tveklöst att flytta ut lagringen av ren försäljningsdata till en MySQL-databas. Ett par följdfrågor dyker upp här:
- Jag vet att det finns en bra ODBC-drivrutin för Mac (Actual), men kan någon rekommendera en bra till Windows? Jag behöver även en rutin för att tala med MS SQL Server.
- ODBC-drivare kan installeras på servern väl? Måste alltså inte finnas på varje klient?
- Kan man importera poster till tabell i MySQL genom FileMaker och då utföra automatiska beräkningar och liknande på fältdata? Går ju att lösa med script efter import, men det hade varit smidigt.

Vassego!

- Jag vet att det finns en bra ODBC-drivrutin för Mac (Actual), men kan någon rekommendera en bra till Windows? Jag behöver även en rutin för att tala med MS SQL Server.

Jag har bara använt den inbyggda. Med FileMaker medföljer ett par stycken (MS SQL bland annat). Fråga min kompis Google om det där.

Läs mera här:

FileMaker Software Deployment, Business Software Solution - FileMaker

Länkar till ODBC-drivare mm.

- ODBC-drivare kan installeras på servern väl? Måste alltså inte finnas på varje klient?

Klient och server bör det vara. Det är ju klienten som skickar kommandot. Men ute hos en kund så missförstod de det där och installerade bara på servern och det fungerade. Det står beskrivet under support hos Actual Technologies.

- Kan man importera poster till tabell i MySQL genom FileMaker och då utföra automatiska beräkningar och liknande på fältdata? Går ju att lösa med script efter import, men det hade varit smidigt.

Ja. Kolla mera i denna tråd hur den kopplingen mellan MySQL och FileMaker fungerar.

http://www.99.se/filemaker/220424-filemaker-9-0-koppla-ihop-webshop-mysql-med-filemaker-i-praktiken.html

Och här:
FileMaker Software Deployment, Business Software Solution - FileMaker

Ursprungligen av Taz_1999:

- Jag vet att det finns en bra ODBC-drivrutin för Mac (Actual), men kan någon rekommendera en bra till Windows? Jag behöver även en rutin för att tala med MS SQL Server.

Jag har bara använt den inbyggda. Med FileMaker medföljer ett par stycken (MS SQL bland annat). Fråga min kompis Google om det där.

Det följer med en drivrutin? Jag hade för mig att det inte gjorde det till Mac när FMP 9 skeppades, så jag tänkte inte mer på det när jag nu konfronterades med Windows-versionen. Ska kolla på installationsskivan...

Ursprungligen av Taz_1999:

- ODBC-drivare kan installeras på servern väl? Måste alltså inte finnas på varje klient?
Klient och server bör det vara. Det är ju klienten som skickar kommandot. Men ute hos en kund så missförstod de det där och installerade bara på servern och det fungerade. Det står beskrivet under support hos Actual Technologies.

Ja, såg just det när jag kollade på deras sida. Står på FileMaker-sidorna också. Har lyckats missa det när jag kollade senast (igår O:-) )

Ursprungligen av Taz_1999:

Vassego!

- Jag vet att det finns en bra ODBC-drivrutin för Mac (Actual), men kan någon rekommendera en bra till Windows? Jag behöver även en rutin för att tala med MS SQL Server.

Jag har bara använt den inbyggda. Med FileMaker medföljer ett par stycken (MS SQL bland annat). Fråga min kompis Google om det där.

Läs mera här:

FileMaker Software Deployment, Business Software Solution - FileMaker

Måste dubbelkolla. De enda ODBC-drivrutiner som jag hittar på FMP-skivan är en för att dela ut sina FileMaker-data, inte för att anslutna till externa källor. Med "den inbyggda", menar du en drivrutin som följer med MS SQL Server? Den länkade sidan hos FileMaker är inte helt tydlig heller...

Om du har FileMaker Pro Advanced 9, titta i mappen Svenska - Extra > Elektronisk Dokumentation > FM9_ODBC_JDBC_Guide_sv.pdf

Så här står det:

Viktigt! Guiden beskriver hur du använder FileMaker-programvara som en datakälla. Se FileMaker Pro Hjälp för information om hur du använder FileMaker Pro som ett ODBC-klientprogram.

Följande visar en översikt över hur du använder ODBC och JDBC med FileMaker-programvara.

Använda FileMaker Pro som datakälla/dela FileMaker Pro-data

Hur:
1. SQL-frågor
2. JDBC

Läs mera i:
Den här handboken

Använda FileMaker Pro som ODBC-klient/hämta ODBC-data

Hur:
1. Interaktivt via relationsdiagrammet
2. En gång, statiskt via ODBC-import eller Arkiv > Öppna. Även via stegen i Importera poster-manuset och Kör SQL-manuset.

Läs mera i:
FileMaker Pro Hjälp

Har du inte FileMaker Pro 9 Advanced?
Skaffa!

Eller så följer du stegen i denna tråd:

http://www.99.se/filemaker/220424-filemaker-9-0-koppla-ihop-webshop-mysql-med-filemaker-i-praktiken.html

(Actual har drivisar även för andra SQL-databaser, tex MS SQL).

Ja, men de har bara drivisar för Mac OS X, jag behöver för Windows...

Jag har FMP 9 Advanced och har läst det där, men hittade inte någon drivrutin att installera på servern för det... Nu har jag den skivan hemma så jag får väl dubbelkolla när jag kommer hem.

Ledsen kompis, men om du inte ställer frågan ordentligt så kan jag inte hjälpa dig.

Eh, vilken fråga är konstigt ställd?

1
Bevaka tråden