Einträge mit dem Tag: [database]

Sonntag Nov 18, 2012

Eine Todo App mit Redis und MongoDB

Wie man eine Todo App mit Redis oder MongoDB als Backend erstellt, zeigt dieser Blog-Eintrag.


Donnerstag Nov 15, 2012

RethinkDB - Verteilte Datenbank für JSON-Dokumente

RethinkDB - An open-source distributed database built with love... So beschreibt sich das Projekt selber :-) Diese DB hat ein paar Features, die sich sehr interessant anhören. Einen Cluster zu bauen, scheint z.B. recht einfach zu funktionieren. Verteilte Joins, Atomic Updates, Sharding und Replikation, JSON Datenmodell, usw. machen die DB für bestimmte Projekte u.U. interessant.


Sonntag Okt 28, 2012

Realtime Analysen mit Redis und Python: bitmapist

Wer schnell Antworten auf 

Wie oft war User 123 heute, diese Wochen, diesen Monat online?
Hat User 123 Aktion X ausgeführt? 
Wie viele User waren aktiv dieses Monat? Diese Stunde?
usw.

braucht, der sollte sich bitmapist (github) anschauen und implementieren.


Mittwoch Okt 17, 2012

MySQL Index Design und Tipps / MySQL Upgrading

Auf der Percona Seite gibt es zwei sehr interesseante Slides / Webinars zum Thema MySQL (englisch):

Index-Design: Tools und Techniken
MySQL Indexing: Best Practices

Sehr interessant und einfach erklärt, wie man mit Indizes vernünftig in MySQL umgeht und verwaltet. Es werden z.B. div. Tools vorgestellt, mit denen man relativ einfach prüfen kann, ob ein Index überhaupt notwendig ist oder wie man raus findet, auf welche Spalten ein Index sinnvoll ist. Zu viele Indizes sind ja bekanntlich auch nix... ;-)

Dann noch ein weiteres Webinar mit Slides zum Thema MySQL Updates und welche Möglichkeiten es gibt, eine MySQL möglichst schnell und problemlos auf eine neue Minor- oder Major-Release zu heben.


Freitag Okt 12, 2012

MongoKit - Dokumentenmapping mit Python und MongoDB

Will man Dokumente in MongoDB mit Python speichern, nimmt man PyMongo - oder MongoKit ;-) Letzterer setzt auf PyMongo auf und wenn man will, kann man auch direkt auf die PyMongo API durch greifen, wenn's pressiert... Aber mit MongoKit ist das Dokumentenhandling sehr schön gemacht. Man erzeugt eine Python-Klasse, die von Document vererbt und definiert dort seine Dokumentenstruktur. Zusätzlich kann man noch sog. Validators hinzufügen, die dafür sorgen, das Constraints eingehalten werden. Das sieht dann z.B. so aus:

def max_length(length):
    def validate(value):
        if len(value) <= length:
            return True
        raise Exception('%s must be at most %s characters long' % length)
    return validate

class User(Document):
    structure = {
        'name': unicode,
        'email': unicode,
    }

    validators = {
        'name': max_length(50),
        'email': max_length(120)
    }

    use_dot_notation = True
    def __repr__(self):
        return '<User %r>' % (self.name)


Montag Jul 16, 2012

Links 20120715 - Ganeti Cluster, NoSQL, Piwigo

Ganeti - Ganeti ist eine Cluster Virtual Server Management Software die auf KVM und XEN aufbaut. Das Tool übernimmt das Management der VMs, Festplattenverwaltung, OS Installation, starten, stoppen und failover der Instanzen zwischen physikalischen Maschinen. Das Ganze ist für bis zu 40 Nodes ausgelegt. In Gentoo ist Ganeti als Paket über Portage installierbar.
Ganeti Tutorial PDF guide - Lance Albertson hat für Ganeti ein PDF Tutorial erstellt, um die Installation zu vereinfachen.
NoSQL matters und Berlin Buzzwords: Big Data und NoSQL in der Praxis angekommen
Piwigo - Eine freie Foto-Galerien Software/Verwaltung die nicht nur für den Desktop gedacht ist, sondern auch ein Mobil-Theme mitbringt, mit dem Foto-Galerien auch auf iPhone und Android gut aussehen.


Dienstag Mai 15, 2012

Links 20120515 - vert.x, OrientDB

Vert.x - Eine Node.js-Alternative auf JVM-Basis. 
OrientDB -  Eine in Java geschriebene NoSQL DB die die Vorteile von Document und Graph Datenbanken vereinigen soll. (NoSQL document database light, portable and fast. Supports ACID Tx, Indexes, asynch queries, SQL layer, clustering, etc.)


Freitag Apr 20, 2012

Links 20120420 - MySQL Performance, Redis

Understanding MySQL Performance through Benchmarking - Die PalominoDB Jungs geben hier auf einen 180 Seiten Slide einen sehr guten Überblick, wie man einen MySQL Benchmark mit div. Tools durchführt und zeigen dabei viele Tools, die man für Performancemessung, Monitoring, usw. sehr gut gebrauchen kann. Viele mysqlslap Beispiele sind im Slide zu finden. 
mysqlslap - Load Emulation Client - Seit MySQL 5.1.4 ist mysqlslap an Bord, um Client Load auf der Datenbank simulieren zu können. Weitere MySQL Benchmark-Tools: sysbench, DBT2, tpcc-mysql
MySQL Performance Analysis with Percona Toolkit and TCP/IP Network Traffic - Baron Schwartz beschreibt in diesem Whitepaper, wie man sich mit Open Source Tools zwischen Client und DB schalten kann und div. interessante Performance-Informationen raus zieht.
Percona Toolkit - Sollte man auf jedem MySQL-Rechner haben. Sehr gute Sammlung von nützlichen Tools. u.a.:
pt-query-digest - Analyze query execution logs and generate a query report, filter, replay, or transform queries for MySQL, PostgreSQL, memcached, and more


Donnerstag Apr 12, 2012

MySQL 5.6 Replikationsneuerungen

Auf der MySQL-Developerseite MySQL 5.6 Replication - Enabling the Next Generation of Web & Cloud Services gibt es ein paar gute Infos, was MySQL seitens Replikation so bringen wird. U.a. Global Transaction IDs und Utilities für selbstheilende Replication Clusters. Zeit wird's... Dazu kommen dann ein paar neuen Utilities:

mysqlrplcheck utility: verifies configuration parameters to ensure fast and reliable deployment of replication.
mysqlreplicate utility: manages the provisioning of a new slave.
mysqlrplshow utility: auto-discovery of the replication topology.
mysqlrplfailover and mysqlrpladmin: manages failover and switchover from a master to a slave, and provides status monitoring of the replication topology.


Dienstag Apr 10, 2012

MySQL DB Sharding

Wer seine Daten auf mehrere Rechner und MySQL Instanzen verteilen/partitionieren (sharding) muss, der findet inzwischen eine ganze Reihe Optionen:

Scalebase
ScaleArc
dbShards
ParElastic

Und dann gäbe es noch so etwas wie shard-query und spider Storage Engine. Weiterhin gäbe es dann noch den MySQL Cluster als kommerzielles Produkt, Clustrix und SchoonerSQL mit dbShards Erweiterung.


Freitag Feb 03, 2012

Oracle - Statements ohne Bindungsvariablen

Größere Performanceprobleme bei Oracle können sich ergeben, wenn man nicht konsequent Queries mit Bindungsvariablen einsetzt. Um mal schnell rauszufinden, welche davon so laufen, kann man folgende Statements nutzen:

create table t1 as select sql_text from v$sqlarea;

alter table t1 add sql_text_wo_constants varchar2(1000);


create or replace function

remove_constants( p_query in varchar2 ) return varchar2
as
    l_query long;
    l_char  varchar2(1);
    l_in_quotes boolean default FALSE;
begin
    for i in 1 .. length( p_query )
    loop
        l_char := substr(p_query,i,1);
        if ( l_char = '''' and l_in_quotes )
        then
            l_in_quotes := FALSE;
        elsif ( l_char = '''' and NOT l_in_quotes )
        then
            l_in_quotes := TRUE;
            l_query := l_query || '''#';
        end if;
        if ( NOT l_in_quotes ) then
            l_query := l_query || l_char;
        end if;
    end loop;
    l_query := translate( l_query, '0123456789', '@@@@@@@@@@' );
    for i in 0 .. 8 loop
        l_query := replace( l_query, lpad('@',10-i,'@'), '@' );
        l_query := replace( l_query, lpad(' ',10-i,' '), ' ' );
    end loop;
    return upper(l_query);
end;
/
update t1 set sql_text_wo_constants = remove_constants(sql_text);

select sql_text_wo_constants, count(*)

  from t1
 group by sql_text_wo_constants
having count(*) > 100
 order by 2
/



Dienstag Feb 01, 2011

Links 20110201 - RHEL6-PostgreSQL

RHEL 6 and the Return of wal sync method - Josh Berkus über eventl. Probleme beim Starten von PostgreSQL mit ext3/ext4 Filesystemen, data=journal, directIO und open_datasync.
Pluggin a cool plug-in for Firefox - Wie man Acrobat Reader unter Gentoo AMD64 und mit Hilfe von kde-misc/kpartsplugin einbindet, beschreibt dieser Artikel.


Donnerstag Jan 20, 2011

Links 20110120 - Newsbeuter, Audex, Postgres-XC, MySQL-Cacti

Newsbeuter ist ein RSS/Atom Feed Reader für die Kommadozeile - der Mutt für RSS Feeds soz. ;-)
Audex ist ein ganz netter CD Ripper für KDE4. Nicht ganz so gut konfigurierbar wie Grip.
Postgres-XC soll im April 2011 released werden. Damit sollte Multi-Master-Replikation mit PostgreSQL Wirklichkeit werden.
mysql-cacti-templates - Wie der Name schon sagt: Templates für MySQL für Cacti.


Freitag Nov 12, 2010

Links 20101112 - Rygel, Neue PostgreSQL Buecher

Rygel - Eine Sammlung von DLNA (UPnP AV) Services. Damit kann man dann die ganzen DLNA bzw. UPnP Fernseher, Radios, usw. auch von Linux aus mit Multimedia versorgen.
Zwei neue, interessante PostgreSQL 9.0 Bücher sind erschienen von Simon Riggs und Hannu Krosing bzw. Gregory Smith:
PostgreSQL 9 Administration Cookbook
PostgreSQL 9.0 High Performance


Donnerstag Mai 06, 2010

Links 20100504 - Nutch, HBase, Tika, Traffic Server

Nutch ist eine Suchmaschine basierend auf Apache Solr (früher Lucene). Damit lässt sich relativ einfach und schnell eine eigene Suchmaschine aufbauen. Nutch fügt Solr noch webspezifische Eigenschaften wie Crawler, Link-Graph Datenbank und Interpretierung von div. Datenformaten (.doc, .xls, .html, .pdf, usw.) hinzu. Für Letzteres ist Apache Tika zuständig.
Apache Cassandra - Von Facebook 2008 als OpenSource-Projekt eingebracht, erhält man eine verteilte, hochverfügbare Datenbank die nach Google's BigTable Prinzip arbeitet.
HBase ist eine Hadoop Datenbank. Damit kann man sehr große Tabellen verwalten auf einfacher Hardware.
Apache Tika - Mit Hilfe von Tika kann man Metadaten erkennen und erzeugen. D.h. es gibt eine ganze Reihe von Parsern, die verschiedene Formate von Dateien (HTML, XML, PDF, DOC, usw.) erkennen und Metainformationen extrahieren können.
Traffic Server ist ein schneller, skalierbarer und erweiterbarer HTTP/1.1 Caching Proxy, der von Yahoo entwickelt wurde. Er kann durch eigene Plugins erweitert werden.