Monday, June 04, 2007

PostgreSQL/G — GORDA

PostgreSQL/G — GORDA: "PostgreSQL/G
Document Actions

* Send this page to somebody
* Print this page

Implementation of the GORDA Interface in PostgreSQL 8.1.x.
Overview

PostgreSQL/G is a research prototype implementing the GORDA Architecture and Programming Interface (GAPI) natively on PostgreSQL. Note this is not a complete replication solution. A replication protocol, such as the ESCADA Replication Server, is required to achieve that.

The implementation of the GAPI natively on PostgreSQL is achieved in two steps. First, a set of patches to the PostgreSQL server and a trigger library provide the necessary functionality in a PostgreSQL specific fashion with minimal intrusion. Second, the GAPI interface is then exposed in a standalone Java process."

Carob: HomePage

Carob: HomePage: "A MySQL - C API: libMySequoia
MySQL client programs can use the Sequoia clustering solution without changing any line of code in the aplication. For example PHP, Perl and Python can transparently connect to Sequoia clusters."

MySQL AB :: MySQL Cluster

MySQL AB :: MySQL Cluster: "MySQL Cluster

MySQL Cluster combines the world's most popular open source database with a fault tolerant database clustering architecture so you can deliver mission-critical database applications with 99.999% availability.

MySQL Cluster enables you to:

* Cost-effectively deliver 5 nines availability using parallel server architecture with no single point of failure.
* Deliver the performance and high throughput required to meet the most demanding enterprise applications.
* Incrementally scale your applications in a linear fashion as your needs grow without having to invest in expensive hardware.

MySQL Cluster has a flexible distributed architecture which gives you complete control over the level of performance, reliability and scalability you need to match your application requirements."

Postgres Cluster

feature: "PGCluster is the synchronous replication system of the multi-master composition for PostgreSQL .

PGCluster is the replication system of the query base using PostgreSQL.

- Since a replication system is a synchronous replication, delay does not occur with the data duplicate between the Cluster DBs.
- Since a server is multi-master composition, two or more the Cluster DBs can receive access from a user simultaneously.
PGCluster consists of three kinds of servers, a load balancer, Cluster DB, and a replication server. "

HA-JDBC: High-Availability JDBC

HA-JDBC: High-Availability JDBC: "Overview

HA-JDBC is a JDBC driver proxy that provides light-weight, transparent, fault tolerant clustering capability to any underlying JDBC driver.
Features

* Supports any database accessible via JDBC.
* High-availability/Fault Tolerance - An HA-JDBC database cluster can lose a node without failing/corrupting the current transaction.
* Live activation/deactivation allows for maintenance/upgrading of a database node without loss of service.
* Improves performance of concurrent read-access by distributing load across individual nodes.
* Support for full JDBC 3.0 (Java 1.4) feature set.
* Compatible with JDBC RowSet implementations found in Java 1.5.
* Out-of-the-box database-independent strategies for synchronizing a failed cluster node.
* Exposes JMX management interface to allow administration of databases and clusters.
* Ability to add database nodes to a cluster at runtime.
* Can be scheduled to auto-activate failed database nodes at off-peak times.
* Open source (LGPL)."

Tuesday, May 22, 2007

Database reporting tool - Toad™ Data Modeler

Database reporting tool - Toad™ Data Modeler: "Toad™ Data Modeler is an ideal tool for database reporting. It allows you to generate reports of both entity relationship and data flow diagrams. The output can be:

* Physical Entity Relationship diagram report
* Logical Entity Relationship diagram report
* To-Do List report
* Data Flow diagram report
* Version comparison report
* User permission report"

Saturday, December 24, 2005

The Open Source Database Benchmark

The Open Source Database Benchmark: "19 Oct 2004
OSDB, the Open Source Database Benchmark, version 0.17 has been released!

Featuring ports to DataBlitz and Oracle, as well as a preliminary Perl implementation, this is the best iteration of OSDB yet!

This version of OSDB can

* Skip tests that are inappropriate for the database engine, with the --restrict switch
* Run under MPI, for true cluster and multiprocessor benchmarks

New results have been posted in the expected/ directory, suggesting useful ways of invoking OSDB.

Barring results to the contrary in the next couple of weeks, this will soon be the new 'stable' version of OSDB."

Thursday, August 26, 2004

Oracle Session Infos

With the following Statement on can get many infos about the processes currently running in an oracle database (assumed you have the necessary privileges)

SELECT /*+ choose */
s.status "Status", s.serial# "Serial#", s.TYPE "Type",
s.username "DB User", s.osuser "Client User", s.server "Server",
s.machine "Machine", s.module "Module", s.client_info "Client Info",
s.terminal "Terminal", s.program "Program", p.program "O.S. Program",
s.logon_time "Connect Time", lockwait "Lock Wait",
si.physical_reads "Physical Reads", si.block_gets "Block Gets",
si.consistent_gets "Consistent Gets",
si.block_changes "Block Changes",
si.consistent_changes "Consistent Changes", s.process "Process",
p.spid, p.pid, si.sid, s.audsid, s.sql_address "Address",
s.sql_hash_value "Sql Hash", s.action
FROM v$session s, v$process p, sys.v_$sess_io si
WHERE s.paddr = p.addr(+)
AND si.sid(+) = s.sid
AND (s.username IS NOT NULL)
AND (NVL (s.osuser, 'x') <> 'SYSTEM')
AND (s.TYPE <> 'BACKGROUND')
ORDER BY 3

Tuesday, August 24, 2004

DBMS_Alert signals when inserting in a table

Sometimes you want to be informed, when data are inserted in a oracle table.

One possibility is to use the sys.dbms_alert package to send signals to other
client progams. Here first a simple example about the usage of the package methods:


DECLARE

NAME VARCHAR2(200);
MESSAGE VARCHAR2(200);
STATUS NUMBER;
TIMEOUT NUMBER;
BEGIN
NAME := 'HURZ';
MESSAGE := 'This is a test';
SYS.DBMS_ALERT.REGISTER ( NAME );
SYS.DBMS_ALERT.SIGNAL ( NAME, MESSAGE );
commit;
STATUS := NULL;
TIMEOUT := 20;
SYS.DBMS_ALERT.WAITONE ( NAME, MESSAGE, STATUS, TIMEOUT );
DBMS_OUTPUT.Put_Line('MESSAGE = ' || MESSAGE);
DBMS_OUTPUT.Put_Line('STATUS = ' || TO_CHAR(STATUS));
END;


Now after some first tests, how can this be used in a real world example?



  1. Let's assume we have created a test-user with the name ALERT_TESTER with the commands [as user "SYS AS SYSDBA"]:

    create user alert_tester identified by YOUR_ALERT_TESTER_PASSWORD;
    
    GRANT CONNECT, RESOURCE to alert_tester;





  2. The user which wants to use the SYS.DBMS_ALERT package has to have the necessary rights i.e. the EXECUTE right for package SYS.DBMS_ALERT. This can be granted by the command:



    
    
    GRANT EXECUTE ON SYS.DBMS_ALERT to alert_tester;



  3. Login now as user ALERT_TESTER and create a test table with:
    
    
    CREATE TABLE ALERT_TESTER.Alert_table
    (
    id NUMBER,
    name VARCHAR2(200)
    )

  4. A trigger which fires a alert when some data are inserted can be created by:
    
    
    CREATE OR REPLACE TRIGGER ALERT_TRIGGER
    AFTER INSERT ON Alert_table
    FOR EACH ROW
    BEGIN
    DBMS_ALERT.SIGNAL('Alert_table#ALERT', 'Data inserted into table Alert_table');
    END ALERT_TRIGGER;
    /

  5. The trigger can now be tested by executing the following command from a first sql-client, which will block until some alert arrives or a timeout is reached:
    
    
    DECLARE
    NAME VARCHAR2(200);
    MESSAGE VARCHAR2(200);
    STATUS NUMBER;
    TIMEOUT NUMBER;
    BEGIN
    NAME := 'Alert_table#ALERT';
    MESSAGE := 'DUMMY';
    SYS.DBMS_ALERT.REGISTER ( NAME );
    STATUS := NULL;
    TIMEOUT := 60;
    SYS.DBMS_ALERT.WAITONE ( NAME, MESSAGE, STATUS, TIMEOUT );
    DBMS_OUTPUT.Put_Line('MESSAGE = ' || MESSAGE);
    DBMS_OUTPUT.Put_Line('STATUS = ' || TO_CHAR(STATUS));
    END;

  6. During the last statement blocks you should insert some data to the test table in a second sql-client and commit the transaction. After the commit
    you should see a message from the trigger in the first sql-client:
    
    
    INSERT INTO ALERT_TESTER.Alert_table (ID,NAME) Values (0,'Test');

    commit



Further information can be found for example here