Oracle Database Integration with Java, JavaScript, Hadoop, Spark I - Java in the database, JDBC, UCP, DRCP, Application Continuity, Transaction Guard II - Oracle Datasource for Hadoop (OD4H), In-Database Container for Hadoop, Orale Datasource for Spark III - JavaScript Stored Procedures using Nashorn All topics discussed here represent my own opinions and speculations.
Friday, December 19, 2008
Oracle Python adapter ( cx_Oracle ) got DRCP
See more details.
Thursday, December 11, 2008
Sunday, November 16, 2008
Read parts of my book on Google Books
The entire section on running Groovy in the database is available.
Enjoy!
Thursday, November 06, 2008
Making frameworks suck less
Enjoy
Wednesday, October 29, 2008
Oracle PHP Video from the Singapore PHP Meetup
http://blog.php.com.sg/archives/singapore-php-meetup-oct-2008-oracle
Tuesday, September 30, 2008
Our OOW Poscast on Dynamic Languages
See you at Oracle Develop Beijin, Mumbai, Moscow, and Prague
http://www.oracle.com/events/oracledevelop/index.html
See you there, Kuassi
Sunday, August 31, 2008
What is Going on for Database Application Performance (OCI, C/C++, Java/JDBC) and Net Services
See other posts for my Java, JDBC, PHP and Ruby sessions and hands-on labs.
Session:
- Best Practices for Developing Performant Applications for Oracle Database 11g Monday 09/22/2008 14:30 - 15:30 Marriott Salon 01
- Best Practices for Deployment, Performance and Diagnosability of Oracle Net Services Thursday 09/25/2008 - 10:30 am Moscone South, Rm 104
- Hands-on Lab: Best Practices for Developing Performant Applications with Oracle Database 11g Monday 09/22/2008 16:00 - 17:00 Marriott Golden Gate B1
See you there
What is Going on for PHP and Ruby on Rails at Oracle OpenWorld, San Francisco, Sep 21st-25th
Sessions
- Building and Deploying Web-Scale Social Networking Applications, Using PHP and Oracle Database 11g Tuesday 09/23/2008 13:00 - 14:00 Marriott Salon 04
- Building and Deploying Web-Scale Social Networking Applications, Using Ruby on Rails and Oracle Database 11g Monday 09/22/2008 13:00 - 14:00 Marriott Salon 02
Hands-on Labs
- Hands-on Lab: Web 2.0 Applications with Ruby/JRuby on Rails and Oracle Database 11g Tuesday 09/23/2008 14:30 - 15:30 Marriott Golden Gate B1
- Hands-on Lab (Part 1): Web 2.0 Applications with PHP and Oracle Database 11g Sunday 09/21/2008 14:30 - 15:30 Marriott Golden Gate B1
- Hands-on Lab (Part 2): Web 2.0 Applications with PHP and Oracle Database 11g Sunday 09/21/200815:45 - 16:45MarriottGolden Gate B1
See you there.
What is Going On for JDBC, Java in the Database, and UCP at Oracle OpenWorld, San Francisco, Sept 21-25th
Look other posts on this blog for my other sessions and labs.
Sessions
- Don't Roll the Dice: Secure Your Java/JDBC Applications with Oracle Advanced Security Tuesday 09/23/2008 11:30 - 12:30 in Marriott Salon 01
- Tips for Troubbleshooting Common JDBC Applications Errors Tuesday 09/23/2008 14:30 - 15:30 Marriott Salon 14/15
- Data- and Compute-Intensive Processing: Middle Tier or Database? Trade-offs and Case Study Monday 09/22/2008 11:30 - 12:30 Marriott Salon 01
- Integrating Oracle Real Application Clusters from the Middle Tier with Oracle Universal Connection Pool Monday 09/22/2008 17:30 - 18:30 Marriott Nob Hill AB
Hands-on Labs
- Hands-on Lab: Develop and Diagnose JDBC Programs and Java Classes in the Database Tuesday 09/23/200816:00 - 17:00 Marriott Golden Gate B1
- Hands-on Lab: Best Practices for Developing Performant Applications with Oracle Database 11g Monday 09/22/200816:00 - 17:00 Marriott Golden Gate B1
See you there.
Tuesday, August 19, 2008
Hands-on Oracle Database 11g Application Development
http://www.oracle.com/webapps/events/EventsDetail.jsp?p_eventId=83729&src=6635701&src=6635701&Act=83
Because this is a hands-on event (laptop provided and pre-staged), space is limited.
Fwiw, you may win
- 1 iPod Touch
- $15 iTunes card
- 1 free OOW pass (does not include travel and expenses)
- books (from recommendations).
Sunday, July 13, 2008
Oracle Symfony in PHP Minor
Enjoy the article @
http://www.oracle.com/technology/pub/articles/gogala-symfony.html
Tuesday, June 24, 2008
PHP OCI8 1.3.3 Has Gone Production
PHP's OCI8 1.3.3 brings support for Oracle's Database Resident Connection Pool (DRCP), Fast Application Notification (in RAC environment), Client Result Cache technologies giving PHP enterprise class scalability, performance, and high availability.
See the README in the OCI8 bundle and read the white paper http://www.oracle.com/technology/tech/php/pdf/php-scalability-ha-twp.pdf for more information.
Sunday, June 01, 2008
New release of database-resident Lucene integration
http://marceloochoa.blogspot.com/2008/06/new-binary-release-of-lucene-oracle.html
This is a perfect illustration of data-intensive-and-compute-intensive processing that i will be talking about in comign events.
Wednesday, April 23, 2008
Instant Client on MAC OS X
The client is supported on the latest OS release - MAC OS X Leopard 10.5.
Enjoy.
Monday, April 07, 2008
April San Francisco Java Meetup - Quercus: How to Run PHP on Java
Caucho (the maker of Resin) is positioning this as a PHP/Java bridge which
- allows PHP applications to be deployed over a Java application server and leverage Java infrastructure: JDBC, JMX, Web Bean (JSR 299), EJB, etc. WordPress was deployed over Quercus in few minutes .
- allows Java to use PHP as view component, in the face of the larger adoption of dynamic languages (PHP, Python, Ruby) for Web applications.
I have not tried but it must be possible to deploy your PHP applications with Quercus, OC4J and the Oracle database.
Sunday, April 06, 2008
San Francisco Ruby Monthly Meetup: Open Social
At this month's SF Ruby meetup:
- Ryan Garver of ELC Technology presented Google's Open Social, touted as the next big thing on the web. Open Social aims at being a king of Facebook API for all social sites. Check it out.
- Michael Slater and Christopher Haupt described how BuildingWebApps.com site, an information portal for Ruby on Rails developers, with articles, links database, and RSS feed processing. All built, of course, with Rails. This is a one stop portal for Ruby developers.
Kuassi
San Francisco PHP Meetup April: Symfony
Dustin Whittle of Yahoo presented the Symfony framework (initiated by a french guy, oui!!).
The meetup was crowded and well received as you can read here. I like this framework because it borrows many patterns that people like in Prado, Rails, Django, and dynamic languages in general (i.e., straight PHP for templating).
Imo, the following capabilities may be extended with Oracle
- ability to cache things in the database (alternatively to memcache, file system and other); may be extended with Oracle's Client Result cache (see my previous posting on this)
- ability to use the database for Internationalization/Localization dictionary; may leverage Oracle built-in Internationalization/Localization
Kuassi
Sunday, March 23, 2008
My presentations at PHP Quebec 2008
Web-Scale PHP Connection Broker
Btw,
-join the Oracle+PHP Users group on http://mix.oracle.com
-join the Oracle+Ruby/Rails Users group on http://mix.oracle.com
Friday, February 22, 2008
Oracle Database and RESTFul Web Services
My friend Marcelo has just posted the results of his new proof of concept.
Play with and enjoy.
Kuassi
Tuesday, February 19, 2008
Oracle Database 11g Client Result Cache Coming to Java
"Caching, caching and caching” is a well-known secret for performance.
The Oracle database 11g furnishes Query Result Cache, which, when enabled, keeps query result sets in the database server memory for reuse by successive invocation of the same query until invalidated by changes to the underlying table(s); as result, the parsing and executing phases of the query are eliminated.
It also furnishes PL/SQL Function Result Cache[1], which is similar to the SQL query result cache but applied to PL/SQL Functions.
Client-Side Query Result Cache
Caching query result sets in the database memory still requires client/server network round-trip(s). The other well-known secret is "The fastest database access is no database access". You now understand the proliferation of middle-tier data caching frameworks such as open-source Memcache (PHP, Ruby, Java) or Oracle’s Coherence (JCache-compliant in memory distributed data grid), which are object-oriented distributed data caches.
Client Result Cache is SQL oriented[2] middle-tier or client-tier data caching feature of Oracle database 11g which, eliminates the network roundtrip incurred by the server-side query result cache.
In addition, Client Result Cache is synchronized with the database and is automatically invalidated.
Performance Proof Points
Running the Nile benchmark[3] with Client Result Cache enabled and simulating up to 3000 users results in
- Up to 6.5 times less server CPU usage
- 15-22% response time improvement
- 7% improvement in mid-tier CPU usage
Enabling Client Result Cache
As of Oracle database 11g Release 1, Client Result cache is available only with OCI-based drivers or adapters including: PHP, JDBC-OCI, OCCI, ODP.Net, Pro*C/C++, Pro*COBOL, and ODBC.
1) Server (database):
Set CLIENT_RESULT_CACHE_SIZE (default 0, cache disabled)
2) Client (sqlnet.ora):
Set OCI_RESULT_CACHE_MAX_SIZE (optional); it overrides server cache size
3) Application code.
Explicitly specify which query to cache with a hint in the query string.
e.g., /*+ RESULT_CACHE */
That’s it!
JDBC Example – CLientRSCache.java
/*
* Client Query Result Cache (sorry for the code formatting)
*/
import the java.sql package
import java.sql.*;
import javax.sql.*;
import oracle.jdbc.*;
import oracle.jdbc.pool.OracleDataSource;
class CLientRSCache
{
public static void main (String args [])
throws SQLException
{
long start;
long end;
long elapsed;
String name = null;
OracleConnection conn = null;
OraclePreparedStatement pstmt = null;
OracleDataSource ods = new OracleDataSource();
// Set the URL (user name, and password)
String url = "jdbc:oracle:oci:scott/tiger@//localhost:1522:orcl11g";
ods.setURL(url);
String query = "select /*+ result_cache */ * from emp where empno < ?" conn.setImplicitCachingEnabled(true);
conn.setStatementCacheSize(1); // Cache of 1 Stmt
PreparedStatement pstmt ;
ResultSet rs;
for (int i = 1; i <= 10; i++) {
pstmt = conn.prepareStatement (query);
pstmt.setInt(1,7500);
// Set the start time
start = System.currentTimeMillis();
// Execute the query and retrieve the Result Set
rs = pstmt.executeQuery();
while (rs.next( ) )
{
// process result set
rs.close;
pstmt.close( ) ;
}
// Set the End time
end = System.currentTimeMillis();
elapsed = end - start;
// Print the time taken to prepare and execute query
// Note: the 1st invocation is nor cached
// Successive invocations are cached
// You may invalidate the result set using SQL*Plus.
System.out.println(" Iteration# “ + i + “ Time to prepare and execute the query ” + elapsed);
}
// Close the connection
conn.close();
}
}
Benefits of Client Result Cache
- Easy to use
- Transparent cache consistency with server side changes
- Frees application developers from building a per-process result cache
- Extends database-side query caching to middle-tier and client-tiers
- Ensures better performance by eliminating round trips to the server
- Improves server scalability by saving server resources
- Transparent cache management
- Concurrent access to result-sets optimizes memory management
- RAC support
See more details on Client Result Cache in the Oracle Call Interface Programmer’s guide[4].
[1] See the Oracle database 11g documentation for more details on Query Result cache and PL/SQL Function Result Cache.
[2] It is currently not distributed, unlike Coherence or MemCache
[3] An end-to-end ecommerce application server benchmark
[4] http://www.oracle.com/pls/db111/to_pdf?pathname=appdev.111/b28395.pdf
Speaking at PHP Quebec 2008
1) a lunch time keynote on Oracle database 11g Database Resident Connection Pool (DRCP)
"Web-Scale PHP Connection Broker"
2) PHPLab: a 3 hours BYOL technical workshop where database vendors rep will be asked any question.
If you plan to attend, let's have a free beer together.
Kuassi