1. MAMP: Mycket enkelt sätt att sätta upp grunden för MediaWiki

    http://mamp.info

    MAMP förkortning av Macintosh, Apache, Mysql och PHP. Med endast några mustryck och ett begränsat antal tangentnedslag har jag nu installerat detta att ha till min mediawiki på min mac.

    Och att stoppa/starta servrarna görs smidigt med en MacOS dashboard widget:

  2. Blob med metadata i molnet

    En vän till mig har skapat en applikation skriven i C++ som körs lokalt på en maskin. För att programmet skall vara användbart behöver den sparade ”banor”, vilket representeras av binärblobbar. I programmet kan man sen spela dessa banor och vid varje speltillfälle skapas det sedan en logg på vad man gjort. Denna logg representeras också av en binärblob.

    Nu till problemet. Binärblobbarna (både banorna och loggarna) tillsammans med lite metadata skall lagras på en central server någonstans på internet. Hur skall då serversidan byggas upp för att på enklaste sätt få det att fungera smidigt?

    (Läs mer…)

  3. Nyheter i PostgreSQL 8.4(.1)

    En av föreläsningarna på FSCONS som jag hann besöka var Magnus Haganders uppdatering av vad som är nytt och snabbare (det var mycket performance imporvements) i PostgreSQL. En feature som jag saknat är stöd för rekursiva frågor. Det har funnits i SQL-standarden sedan 2003 men inte funnits i PostgreSQL förrän nu.

    (Läs mer…)

  4. SQL for yummies

    Att titta på SQL-loggen samtidigt som man kör lasttester mot ett system som använder JPA (med t ex Hibernate i botten), utan att ha cache:ade queries, brukar likna ett ”regelbundet” myrornas krig eller en dåligt AA-kodad film. Nöjer man sig med stillbilder men inte vill ha random brus kanske cirkeldiagram (pie chart) i SQL-prompten vore något!

  5. Vad händer med MySQL?

    Många är oroliga över MySQLs framtid. Sista året har, minst sagt, varit stormigt med en ny ägare i först Sun och sedan Oracle. Inte nog med det, ett stort gäng av de ledande utvecklarna har lämnat.

    Om detta, och mycket mer, finns det att läsa på Linux Magazine. Hela artikeln finns att läsa här.

  6. ORM-godis från JBoss

    Sist jag jobbade med Hibernate (var ett tag sedan tyvärr) så såg jag inget stöd för det som JBoss nu ordnat med ”Easy Entity Versioning” – enkel versionshantering av bönor genom annoteringar. @Audited (var förut @Versioned men ändrades för att undvika förväxling med JPA:s @Version) tycker jag ser ut som ett välkommet tillskott. Har ingen aning om det kommer dyka upp i någon JSR för JPA. Utifrån Hibernates bugglista så ser det ut som att det finns ganska många frågetecken kvar att reda ut, t ex ”how to support bulk updates”. För enklare modeller (eller tidigare faser av ett projekt, prototyping) tycker jag det verkar lovande.

  7. IntelliJ IDEA 8

    Ifall ni missat det så har JetBrains precis släppt en nya major-version av sin IntelliJ IDEA, nämligen version 8.

    Några grejer som finns med i nya releasen:

    - SQL + Query Runner
    - UML-Like Class Diagrams
    - JBoss Seam
    - JavaScript & Flex debugger
    - FreeMarker & Velocity

    Dessutom har de snabbat upp uppstarten (hört den förut va?) och skapat en wizard för att hantera plugins. Läs mer om vad som är nytt här, och ladda ner den nya versionen här (30-dagars trial finns).

  8. Overview of the Google App Engine Persistence framework

    The Google cloud computing environment, Google App Engine, currently provides a low cost (free) highly scalable runtime environment (python) for web applications. Along with App Engine specific APIs and support for their general service APIs, you have access to a distributed, scalable persistence engine, Datastore. A quick review of App Engine Datastore sets firm your impression that Google has again relied on the ”we build it better” framework approach. Not following a relational model or a webservice, Datastore started with goals of high availability, scalablity and performance. Because of quota limits on current free accounts, its hard to validate their success here; however, we can get a better understanding of the architecture of Datastore by checking out their internal ”Bigtable” implementation, which is the basis for Datastore.
    (Läs mer…)

  9. Bättre stöd för Java i Oracle 11g

    Oracle 11g har ju varit ute på marknaden ett tag men många kanske sitter kvar med äldre versioner. En av dom stora nyheterna på Java fronten är att det nu finns stöd för Java 1.5 internt. Nu kan man alltså skriva sina stored procedure’s med for(:) loopar och använda generics tills fingrarna blöder. Men den största nyheten som jag tidigare tagit för givet är att Oracle nu har infört JIT kompilering!! (Läs mer…)

  10. SUN köper MySQL

    Sun betlarar drygt 6,3 miljarder kronor för MySQL. Skall bli mycket intressant att se vad som kommer att ske i frammtiden. Både MySQL och Sun verkar vara väldigt exalterade. Suns VD, Jonathan Schwartz, beskriver det som Suns viktigaste uppköp någonsin.

    Läs mer på Jonathan Schwartz och Kaj Arnös (MySQL) blogg

  11. JDBC 4.0 stöd

    Följande databaser har idag stöd för JDBC 4.0 (saxat från denna blog)

    * Java DB/Apache Derby
    * MYSQL Connector/J 5.1
    * Oracle 11g
    * inet software for Microsoft SQL Server(Merlia driver) and for Oracle (Oranxo driver).
    * Atinav aveConnect 4.0 for Microsoft SQL Server
    * DataDirect 3.7 has also introduced some JDBC 4.0 features

  12. Radorienterade databaser obsoleta?

    Läser ditt system från en databas oftare än det skriver? – överväg isåfall någon kolumnorienterad databas.

    Företaget Vertica Systems Inc. har byggt en sådan databas. Michael Stonebraker skriver att dagens relationsdatabaser har sämre prestanda än de nya databaser som vrider tabellerna 90 grader. Genom att gruppera liknande data minimerar kolumnbaserade databaser lästiden.

    Stormbreaker borde veta vad han talar om – på 70-talet var han med och skapade Ingres- och Postgres-tekniken som många av dagens populära databaser bygger på.

    Men kolumnorienterade databaser är fortfarande en liten marknad; de största databaserna på marknaden är alla radorienterade databaser. Att organisera data i rader har sina fördelar, bl a att man skriver fortare till en radorienterad än till en kolumnorienterad databas och just detta är en nyckelfaktor för transaktionsrika system där data läses och skrivs från/till en databas mer eller mindre hela tiden.

  13. PostgreSQL

    Laddade ner version 8.2 på min Windows Laptop för en liten test.

    Databasen var lätt att installera och komma igång med. Det följer också med grafiska verktyg där det mesta kan göras. Om man har arbetat med t.ex. Oracle så känner man snabbt igen sig när det gäller teknisk uppbyggnad och syntaxer.

    Postgres använder “lyssnare” som skapar användarprocesser för varje uppkoppling mot databasen, vilket är ett beprövat koncept som känns igen från t.ex. Oracle.

    Gjorde även en liten “tabell insert” test med 4 miljoner poster från en loopande procedur (autocommit off). Insert’en tog 115 sekunder på min Windows Laptop. Körde proceduren 4 ggr (dvs skapade totalt 16 miljoner poster). Skapade också ett icke unikt index av typen btree det tog 4.5 minuter.

    Man bör stänga av autocommit om man vill ha prestanda. Det görs genom att editera filen psqlrc. Man kan också köra kod under en startad transaktion.

    Postgres verkar fungera väl och har TeraByte databaser som referens. Finns en hel del lyckade benchmarks vad gäller prestanda o.s.v.

    Tycker däremot att namnet känns lite ”tungvrickande” det får dom gärna byta.

    http://www.postgresql.org/

  14. Apache DdlUtils

    Då jag suttit med i projekt där datamodellen har ändrats under projektets gång så vet jag hur mycket strul det är med sånt. Eftersom varje utvecklare oftast har en egen databas-instans som de utvecklar mot så behöver varje ändring av datamodellen kommuniceras ut i projektet och varje utvecklare måste själv göra sina ändringar. Man vill ju helst inte kasta hela databasen och skapa den på nytt bara för att en annan utvecklare utökade längden på ett fält (till exempel). Ovanpå detta så vill man enkelt kunna uppdatera en databas i drift och vara säker på att alla ändringar blev rätt. Ett alternativ är att på sidan av sitt stora databas-script ha ett antal mindre ”delta”-script som utför de nödvändiga ”alter table” som behövs mellan varje release.

    Gissa om jag blev glatt överraskad nnär jag av en händelse snubblade över DdlUtils på db.apache.org. Detta är ett lib plus ett stycke Ant-task som läser en XML-fil vilken definerar din datamodell. Den kan därefter generera en ny databasinstans eller uppdatera en existerande. Det går även att generera en sådan XML-fil från en existerande datamodell för att på så vis slippa skriva en komplicerad fil första gången. I fortsättningen så tar man endast och modiferar denna XML-fil så sköter DdlUtils resten åt dig. Mycket smidigt och väldigt användbart. Idag stödjer DdlUtils de flesta större databaser (MySQL, PostgreSQL, Oracle, MS SQL, DB 2, Sybase etc..). Ladda gärna hem det hela från http://db.apache.org/ddlutils/index.html och testa.