My favorites | Sign in
Project Home Downloads Wiki Issues Source
Project Information
Members
Featured
Downloads
Links

What is it?

Data Access Layer library with Horizontal and Vertical scaling abilities. Ganglib is Zend Framework compilant, but could be used even in application that doesn't use Zend.

It needs Your help!

Wan't to become a contributor? Or want to use Ganglib in Your application? We'll be thankfull for every feedback and help to develop Ganglib.

Please contact us if You are interested.

How it works?

Ganglib establishes a layer of abstraction between Data Queries and Data sources. Data Queries are LINQ-like, PHP object notation statements - compilant with SQL.

Each query has to be send to Ganglib Data-distributor object. Data distributor uses changeable strategies to select, and operate on data source.

Additionaly it uses cache for each read operation.

Power of the Strategy

All data-source specific operations are implemented in strategy. As developer - You could easy, as app grows, add abilities to scale Your database horizontally, vertically, implement replication... You could even change Your relational-database to something completly different - for example Amazon SimpleDB - implementing only new Strategy.

That's not all!

If You wan't to use as SQL-compilant data source - for example RSS channels, or File System - that's not a problem - yet again, need only to change to new strategy that will emulate SQL operations.

We think, that's the power of Ganglib.

Out of box

Standard, out-of-box strategies are: PDO_Vertical, PDO_Horizontal, PDO_Simple, RSS_Horizontal...

Simple PDO strategy

Simple database strategy uses only one database server to execute queries. It's good to start with Your startup. Then You could think about partitioning strategies:

Vertical Partitioning strategy

Uses easy to edit config, to send queries to different Database servers depending on FROM, JOIN clauses. Wan't to use different databse to store Users Data? Or Search? No problem - queries won't change - You'r app could grow in peace ;)

Horizontal Partitioning strategy

Today, no other DAL implements this. Some partitioning techniques are implemented in database Engine - for example in MySQL5, or HSCALE addition - but this works only on one DB server. What if You wan't to use 35 mysql servers to handle users data, as My Space does? It's a problem for RDBMS.

It's not a problem for Ganglib. In setup You could easy add rules for every db server - RANGE, HASH or LIST techniques could be used.

If out-of-box implementation doesn't meets Your needs - You could very easy use our PDO abstract strategy to implement Your own.

RSS Horizontal strategy

It's implemented to show how elastic Ganglib is. Add multiple RSS channels .. and use SQL to read data from them.. using cache of course!

Examples included

Please see Download section to get Ganglib works ;) Examples demonstrate all out-of-box strategies and You could use them as inspiration to write You'r own.

If You could send us Your own strategies or examples of Ganglib please contact us!

We work on documentation...

Yes, documentation is a leak now :( But we're working on it!

Powered by Google Project Hosting