5

For reasons that are beside the point, a company has bought an Exadata Eighth Rack. Some of the managers thought that this would improve performance of current applications. The problem is that hardly any application makes intensive database work (yes, this is a good moment for looking at facepalm animated gifs). So, at the moment, migrations have proven just little benefit.

The question is obvious. Most of the applications are written in Java, and some of them make intensive use of Solr and Cassandra. For what I know, Exadata is intended for storing data, while Exalogic can hold applications too. Anyway, I'm wondering if there is some way of taking advantage of mentioned infrastructure.

sinuhepop
  • 20,010
  • 17
  • 72
  • 107

4 Answers4

4

Replace Solr with Oracle Text.

Before I get down-voted: normally I would not recommend replacing existing code built with a popular, open-source program with a seldom-used, proprietary product. But if you want to use a lot of space and CPU on your database servers then Oracle Text can definitely help.

As more generic advice, the primary role of a database is not to store data. A file system can do that. Databases are built to join data. If an application is reading a large amount of data and doing ad hoc joins, those are the jobs you want to move to the database.

Jon Heller
  • 34,999
  • 6
  • 74
  • 132
1

Exadata -> Oracle Database extreme performance. Exalogic -> Fusion Middleware extreme performance. (Java goes here)

Your best move will be refactoring the application to put as much workload as possible on the DB (PL/SQL).

Another thing I could think of, but this would be a radical approach I have never really tried it myself (Yes I work with Exadatas too) maybe you can give it a shot and let us know here...

What about using all those GBs on the Exadata's RAM and start tuning your Java application's latency? I mean with that gruesome amount of Memory you can try and set a real nice amount of heap and avoid Garbage Collection induced latency. Please do let me know here what comes out if you actually try this.

bubooal
  • 621
  • 3
  • 8
  • Sorry, but I don't understand your idea. How is possible for a Java application to use all that RAM? – sinuhepop Sep 20 '13 at 10:04
  • Java Heap, it is limited when you start your JVM using Xmx and Xms right?, Exadata has tons of Memory, so basically use it. Set a huge heap size and tune it for Old Gen to take most of it, Big eden and survivor spaces can hurt you since they are mark-copy-compact. However making Old gen larger, you can actually trade several Old Gen Collections for maybe a couple kind of long ones and maybe your app will see some improvement. This is just a crazy idea however, not much you can do for Java on Exadata anyways. Do let me know if it works somehow :) – bubooal Sep 22 '13 at 05:52
  • Sinuhepop here's your answer sorry: Because that is the way Java works right?, You get an Automated Memory Management System. Java heap becomes full as you create objects. If you had infite memory, your app could run forever instantiating objects and you would never need the Garbage Collection to run :). Basically the idea is to try and give Java's heap all the memory it can get to lower Garbage Collection Ratio. Hope that makes it clear sinuhepop :) – bubooal Sep 22 '13 at 05:59
  • I can think of some advantages with Java applications in Exadata (low latency, lots of RAM and performant processors). But the problem is I don't know how to install any of them in an Exadata :( – sinuhepop Sep 22 '13 at 11:01
1

Which protocol do the Java applications use to connect to Oracle?

If it's not IPC (inter process communication, aka BEQUEATH, aka shared memory), but maybe TCP and you have many fast & tiny roundtrips, than this would be your low-hanging fruit - eliminate the network stack.

edit: just realized that exadata cannot run java applications by default (only ODA does) - so it wouldn't be possible to make use of IPC. However, perhaps you're able to test the impact of IPC in one of your applications using the former infrastructure?

HAL 9000
  • 3,877
  • 1
  • 23
  • 29
1

Exadata cannot host any customer application. You cannot install anything there. You only can host Oracle database on Exadata. It means you can use database features like DBFS (file system over Oracle database), Java option (storing and executing java code in database). But you need to check what options you have license for. And internal JVM is used, which cannot be customized or upgraded.

Exadata is database appliance designed to work with large amount of differently accessed data in very effective and manageable way.