Pencarian

Rss Posts

 

 

 

Berita pada bulan January, 2010

Friendlist Graph Module for Drupal

Jan 29, 2010

At DrupalSouth 2010 (Wellington) after LCA2010, Peter and I implemented a Drupal module as a practical example of how the OQGRAPH engine can be used to enable social networking trickery in any website. The friendlist_graph module (available from GitHub) extends friendlist, which implements basic functionality of friends (2-way) and fans (1-way) for Drupal users.
The friendlist_graph module transposes the friendlist data using an OQGRAPH table, allowing you to query it in new and interesting ways. By adding some extra Drupal Views, it allows you to play Six Degrees of Kevin Bacon with your Drupal users or find out how two arbitrary users are connected. It can find a path of arbitrary length near-instantly. Previously, you#8217;d just avoid doing any such thing as it#8217;s somewhere between impossible/limited/slow/painful in a regular relational schema.
Now think beyond: retrieve/share connections using Open Social, FOAF, Twitter/Identi.ca, logins with OpenID, and you #8220;instantly#8221; get a very functional social networking enabled site that does not rely on localised critical mass!
We tested with about a million users in Drupal (and approx 3.5 million random connections), which worked fine #8211; the later demo at the DrupalSouth stuffed up because I hadn#8217;t given the demo VM sufficient memory.
Naturally, you could do the same in Joomla! or another CMS or any site for that matter, we just happened to be at DrupalSouth so a Drupal module was the obvious choice. Take a peek at the code, it#8217;s pretty trivial. Just make sure you run a version of MySQL that has the OQGRAPH engine, for instance 5.0.87-d10 (Sail edition!) from OurDelta.

New OLAP Wikistat benchmark: Introduction and call for feedbacks

Jan 29, 2010

I’ve seen my posts on Ontime Air Traffics and Star Schema Benchmark got a lot of interest
(links:

http://www.mysqlperformanceblog.com/2010/01/07/star-schema-bechmark-infobright-infinidb-and-luciddb/

http://www.mysqlperformanceblog.com/2009/10/02/analyzing-air-traffic-performance-with-infobright-and-monetdb/

http://www.mysqlperformanceblog.com/2009/10/26/air-traffic-queries-in-luciddb/

http://www.mysqlperformanceblog.com/2009/11/02/air-traffic-queries-in-infinidb-early-alpha/

).
However benchmarks by itself did not cover all cases I would want, so I was thinking about better scenario. The biggest problem is to get real big enough dataset, and I thank to Bradley C. Kuszmaul, he pointed me on Wikipedia statistics on access to wikipedia pages, and thank to Domas, who made stats accessible. Link to the archives: http://dammit.lt/wikistats/archive/ or the original Domas’s announcement .
Although the table does not have very much different information, I think it is good enough to represent cases you can face in Web application ( log processing, page visits, clickstream, etc).
I made some efforts to normalize data to have model in classic star schema and prepared queries that could be run on proposed dataset (John Sichi, lead of LucidDB helped me to draft some queries).
You can see details on our Percona Wikistat benchmark Wiki.
I have next goals with proposed benchmark:

Compare engines in OLAP queries for planning, predicting growth, analyzing access patterns to wiki pages, draw trends.
Compare engines in statistical queries for end users, which can be executed in real-time. I.e. How many times that or another page was accessed yesterday vs today.
Understand specific features and characteristic of each engine.
Compare throughput on simple queries (queries and scenario to be drafted yet)
Check ability to load data and serve queries at the same time ( availability during data load ) (queries and scenario to be drafted yet)

So in proposed schema I have four tables:
pagestat (fact table), and pages, datesinfo, projects (dimensions tables).
Dimensions tables are supposed to be static and not changed, and we can change datasize
by varying amount of months loaded into fact table (so this is scale factor).
EEM diagram

( made with MySQL Workbench )
In current dataset, which you can download from Amazon snapshot (name: ?percona-wikistat?, ID:snap-a5f9bacc) we have:

Table pages: 724.550.811 rows. data size: 40476M
Table datesinfo: 9624 rows, one entry represents 1 hour
Table projects: 2025 rows
Table pagestats
Data for 2009-06: # 3.453.013.109 rows / size 68352M
Data for 2009-07: # 3.442.375.618 rows / szie 68152M

So with two months of stats we have about 172GB of data with about 7 billion rows in fact table.
Example of query ( again, full list on Benchmark Wiki)
PLAIN TEXT
SQL:

SELECT project, sum#40;page_count#41; sm

nbsp;FROM pagestat

nbsp; nbsp;JOIN datesinfo di ON #40; di.id=date_id #41;

nbsp; nbsp;JOIN projects p ONnbsp; #40;p.id=project_id #41;

nbsp;WHERE di.calmonth=7 AND di.calyear=2009

nbsp;GROUP BY project

nbsp;ORDER BY sm DESC

nbsp;LIMIT 20;

I am going to load data and run queries against available engines:

MySQL MyISAM / InnoDB (to have reference results)
InfoBright
InfiniDB
MonetDB
LucidDB
Greenplum

and I will report my results ( so stay with MySQLPerformanceBlog )
I’d like also to test also Paraccel, Vertica and KickFire systems, but I do not have access to.
I welcome your feedback on the benchmark, and what else you would like to see here.

Entry posted by Vadim |
No comment
Add to: | | | |

MariaDB is Thinking about Fixing MySQL Replication and You Can Help

Jan 29, 2010

In case you have not noticed, MariaDB is joining the list of projects thinking about how to improve MySQL replication.nbsp;nbsp; The discussion thread starts here on the maria-developers mailing list. This discussion was jointly started by Monty Program, Codership, and Continuent (my employer) in an effort to push the state of the art beyond features offered by the current MySQL replication.nbsp; Now that things are starting to die down with the Oracle acquisition, we can get back to the job of making the MySQL code base substantially better.nbsp; The first step in that effort is to get a discussion going to develop our understanding of the replication problems we think are most important and outline a strategy to solve them.nbsp; Speaking as a developer on Tungsten, my current preference would to be to improve the existing MySQL replication.nbsp; I suspect this would also be the preference of most current MySQL users.nbsp; However, there are also more radical approaches on the table, for example from our friends at Codership, who are developing an innovative form of multi-master replication based on group communications and transaction certification.nbsp; That’s a good thing, as we want a range of contrasting ideas that take full advantage of the creativity in the community on the topic of replication. If you have interest in improving MySQL replication please join the MariaDB project and contribute your thoughts.nbsp; It should be an interesting conversation.

Virtualization Management Vendor Zenoss Grows 150% in 2009 Despite Global Downturn

Jan 29, 2010

pSignificant Revenue Gains, Customer Acquisition and Technology Innovation Attributed to Demand for Legacy Alternatives to Manage Virtual and Cloud IT Infrastructures /pbr/pnbsp;Austin, TX (PRWEB) January 28, 2010 — Zenoss, Inc., a leading commercial open source provider of Unlegacy enterprise IT management products, today announced the company achieved strong revenue, customer, and technology innovation growth in 2009. Fueled by growing demand by brand name enterprises seeking an alternatRead More…

MySQL Cluster GCP Stop

Jan 28, 2010

One of the most common errors we come across whilst supporting MySQL Cluster is an error commonly referred to as ‘GCP stop’.nbsp; These errors will occur most frequently in cluster setups which have high activity and more often than not use disk data.nbsp; So lets look into what these are, why they happen and how to prevent them.
What is a GCP Stop?
All data that needs to be written to MySQL cluster is first written to the REDO log, this is so that when a node starts the log can be played back from the position of the last good LCP (Local CheckPoint, a point at which all the cluster data memory is written to disk).nbsp; The REDO data needs to be consistent between all data nodes and that is where the GCP (or Global CheckPoint) comes in.nbsp; It synchronously flushes the REDO data across all data nodes to disk every 2 seconds (by default).nbsp; A GCP stop happens when a new GCP is trying to commit the REDO to disk and the previous one has not finished.nbsp; MySQL Cluster is a real-time database so this is a critical problem and the node in question is shut down to preserve data integrity.
Why does a GCP Stop happen?
GCP stop usually happens for one of two related reasons.nbsp; Firstly there is too much data to commit between GCPs for it to all be written to disk at once and secondly the disks are too slow.
You should now be able to get an idea of why this is more prominent on clusters using disk data, both the disk data and GCP are written to disk at the same time (as well as things like the LCP), lowering the disk bandwith available for the GCP.
This is also more common on multi-threaded data nodes (ndbmtd) in MySQL Cluster 7.0 because these can handle more data simultaneously and therefore can be in a situation where they need to write more to the REDO log.
How to prevent a GCP Stop
There are several effective ways to prevent a GCP stop:
1. Buy faster disks – may not be an option but if the data is written faster this can prevent a GCP Stop2. Spread the different parts of the data node onto different disks – the REDO, LCP and disk data can all be separated onto different disks, giving a much better disk I/O bandwidth to each3. Commit more often – if you have a really long transaction with lots of data this could create a commit which is too large for one GCP4. Configuration – there are some configuration settings you can tweak to improve things, but these will only give small improvements over the above three points.nbsp; Settings like TimeBetweenGlobalCheckpoints which if decreased causes the data node to GCP more often which means there is less to write to disk per checkpoint (but checkpointing more often means less time to checkpoint, so not always a good option).nbsp; There are also settings affecting disk factors outside of GCP such as DiskPageBufferMemory, increasing this will buffer more disk data (much like innodb_buffer_pool_size for InnoDB) decreasing disk bandwidth disk data uses so that the GCP can use more disk bandwidth.
There are other settings that can be tweaked as a last resort depending on what kind of GCP Stop occurs (yes, there are a couple of different types) but the first three points should be a primary concern before thinking about doing this.
If you have any problems with GCP Stop I highly recommend asking on the MySQL Cluster forum or the MySQL Cluster mailing list.

MySQL Workbench 5.2.15 Beta 5 Available

Jan 28, 2010

Dear MySQL Users,
Its only been a week since last release, and already the MySQL Workbench Team has a 5.2 beta 5 ready. This Workbench Beta 5 build includes fixes for 26 bugs #8211; 5 P1, 8 P2, 9 P3 and 4 P4.
We want to thank all the people who have been testing MySQL Workbench 5.2 alphas and betas and taking the time to file bugs and provide valuable feedback. We have fixed many bugs since last release and worked on some other details as well.
MySQL Workbench 5.2 Beta 5 provides:

Data Modeling
Query (upgrade from MySQL Query Browser)
Admin (upgrade from MySQL Administrator)

If you are a current user of MySQL Query Browser or MySQL Administrator, we look forward to your feedback on all the new capabilities we are delivering in a single unified MySQL Workbench
As always, you will find binaries for the various platforms on our download pages.
Please get your copy from our Download

http://dev.mysql.com/downloads/workbench/

To get started quickly, please take a look at this short tutorial.
MySQL Workbench 5.2 Beta Tutorial

http://wb.mysql.com/?p=406

Please be aware that this release is still a beta version ? so please don?t use it on your production servers! Also note, MySQL Workbench files saved with version 5.2 cannot be opened with previous versions of our program.
The files for several platforms have been pushed to our main server and should be available on our mirrors.
Blog postings and general information ? including build instructions for Linux ? can be found on our Workbench Developer Central site.
Workbench Developer Central

http://wb.mysql.com

Workbench Documentation and details on changes between releases can be found on these pages

http://dev.mysql.com/doc/workbench/en/index.html

http://dev.mysql.com/doc/workbench/en/wb-change-history.html

If you need any additional info or help please get in touch with us.
Post in our forums, leave comments on our blog pages or if you want to talk to us directly you can visit us on our IRC channel #workbench on irc.freenode.net.
Again, thank you for trying out the Workbench beta, we look forward to your feedback and bug reports.
- The MySQL Workbench Team

New beginnings for Sun, MySQL — and me

Jan 28, 2010

Finally, after many months, Oracle’s long-awaited acquisition of Sun Microsystems has been completed.?Having joined Sun as part of the MySQL acquisition two years ago, I think it’s a good outcome both for Sun and for MySQL.?The vision behind Sun’s acquisition of MySQL was right on: Sun wanted to become the leader in open source and use MySQL as read more

Empowering the (Local) Community

Jan 19, 2010


After our first wonderful party in Bandung, we decided to choose Ghian to be a leader of this LUG, Wisnu as the Co-Leader, Yudha as a secretary, and Rolly as a exchequer. They worked as both volunteer and (yet another) open source worker in our lovely town almost three years (Ghian was retired in 2008, [...]

Menginstall MySQL Secara Manual di Linux

Jan 19, 2010

Pada episode OpenScreen kali ini saya membahas tentang cara menginstall MySQL di Linux secara manual. Jadi tidak menggunakan apt-get atau yum secara otomatis, sehingga kita menginstall benar-benar secara manual tanpa bantuan sistem operasi linux.

Untuk lebih jelas silahkan download video tutorialnya disini :

http://tiny.cc/xfJle

Link-link terkait :

http://www.mysql.com/

http://www.linuxmint.com/

http://www.ubuntu.com/

Dikutip dari : http://openscreen.wordpress.com

Javascript on the Desktop (well Linux Mostly) – Alan Knowles

Jan 19, 2010


Unfortunately my internet line died over the weekend, and I was left without a connection until Tuesday. I had a bit of offline time to have a look at some interesting new(ish) technology.

If you have paid any attention to Gnome development, there are mentions of gnome-shell, and something about making it easier to develop add-on/applets etc. using Javascript. I have not really had time to look at this much, however given the fact I had downloaded all the components prior to my loss of connectivity, I spent some time over the weekend and monday looking at this in more detail.

It looks like there are obviously things going on in IRC and mailing lists, so most of my impressions are from the websites, and code. There are basically 2 projects currently.

GJS – This is the mozilla Javascript engine bound to the gobject introspection system
Seed – This is the webkit Javascript engine bound to the gobject introspection system

Of the two, Seed apears to be a little more advanced and more time has gone into it, based on the fact there appear to be more core features in Seed (eg. I could not find anything like Seed.print() in GJS), and there are very few examples in GJS

Both of these use the GObject introspection method to bind to Gtk, and a large and growing number of other libraries. This is something I found very interesting having gone through a similar process with rooscript.

The fundimental issue of creating bindings to Gtk (and anything that uses the GObject system) is that historically, almost everyone (PHP, Python etc.) who did it used this method.

* Parse the html documentation, or the .h files (extracting the classes, enums, methods, arguments etc.)
* Generate Binding code for each library, which wraps these methods, loads the ‘.so’ libraries and links it all together.
* Compile a Module (or statically link it in some cases)
* Run… Test.. Fix bugs in wrapping code… Run … Test.

What GObject inspection introduces is an very thin layer that can be used to expose any of these methods without writing any binding code (other than to GObject inspection). The result is that to add more features (linking to another library) – you just have to generate a XML file describing the interface, compile it with g-ir-compile and put it in the right folder, and you have magically added support to a new Library, without generating an C code!

This also means that fixing the binding is considerably simpler (fix the XML file, re-compile etc.) and you have solved bugs in any language that is using it… (as I found with gtk_tree_store_set_column_types()


Playing with the languages.


GJS and Seed present the Gtk API very slightly differently, which at present appears to be a bit of a blocker for deciding which to use (or even to bother for some). The key differences are for authoring

* Javascript ‘let’ features in GJS – not available in Seed.. – This is rather a big blocker as code designed for GJS will fail in Seed totally.. (and visa-versa probably)
* Different call signatures to signalsÃ? Ã? Ã?  SEED:OBJECT.signal.connect(method)Ã?  vsÃ?  GJS:OBJECT.connect(’signal’, method)Ã?  – I think personally that GJS way is more true to the concept and cleaner, however as you can see below there are ways around this.

Seed has a git repo on gnome ’seed-examples’, which contains a large number of examples, although their depth is rather thin unfortunatly.. (code coverage is probably 1% at best)…
Both have pretty much Zero in the documentation stakes.. – A rather trivial task to create – which I’m tempted to have a go at….


Anyway back to my playing around..


I’ve been doing some serious shit in Javascript recently, GUI builders, Code generators, Hacking GTK bindings etc. so I’ve seen the good, bad and ugly as far as Javascript goes (Bad sometimes being my code).Ã?  I’ve been slowly moving to what I regard as an effecient, productive use of Javascript, most of which can be seen in the xtype support in RooJS

After runing the first few examples in seed-examples, I decided to see if using an xtype / Roo structure could be done with Seed. After a bit of tweaking, and bugfixing of Seed, I finally got this code to work.



var win = XN.xnew({
xtype : Gtk.Window,
type: Gtk.WindowType.TOPLEVEL,
listeners : {
'delete-event' : function (widget, event) {
return false;
},
destroy : function (widget) {
Gtk.main_quit();
}
},

set : {
set_border_width : [ 10 ],
resize : [300, 300],
show_all : []
},
items : [

Truncated by Planet PHP, read more at the original (another 5487 bytes)