Friday, August 10, 2012

The new social media is 3D


Do you think social media is cool, you think you know all about the ways to interact with social media platforms like facebook, google+, twitter and Weibo. Most likely you do if you are a frequent user of social media platforms. However, do you also know how the future of presenting the social media networks might look like. And it is good to know that a lot of people are already interacting on social media platforms and the number of them is still rising. Upcoming generations will see it as one the normal ways of interacting. Where we now have a large set of people who will never join a social network online in the future the adoption (in online countries) will be coming to a almost 100% in my personal opinion. Below infographic is showing the usage of social networks in 2011.

You can see some concepts online of how the future might look like. For example brandrepublic.com is showing a new way of interacting with facebook in a 3D setting. Just watch the video below which is made together with LG and is making use of a LG screen.


Now mix this thought with Google glasses (watch the movie below) and it will not come as a surprise that in the near future you might see people standing in the street making strange gestures. They might just be rearranging some topics in their 3D social media feed or responding to a message.

Missing the mobile hype


Mobile usage is skyrocketing and especially the use of apps on smartphones is already in overdrive for quite some time. That would suggest that companies are investing heavily into the smartphone and apps. One would think that mobile apps are the talk of the town at many corporate marketing departments and due to this a hot topic at many CIO meetings. You could expect that mobile is on the combined strategic roadmap of both IT and marketing.

A recent study done by Forrester shows that only 40% of the companies actually do have a mobile roadmap.

“Successful mobile road maps require investment in supporting activities. Making specific investments in mobile education and skills development, maintaining organizational flexibility to increase speed to market, and adapting to local markets are key to the success of a mobile road map.”

source: Service2Media
Indeed this is true however having a good mobile strategy can put your company on top of the food chain which is a comfortable place to be in the current economical period. When in a economical downturn market you want to make your brand (B2B and B2C) as visible as possible and you would like to offer your customers as much easy service as possible against a price as low as possible.

For example, you run a reservation line for restaurants. A common practice of people is to decide where to eat when they are with friends and such events are not planned well in advance. Due to the nature of the decision cycle a phonecall is commonly the quickest way to find out if there are still tables available. Every phonecall to a service agent costs you 50 cents. Calculating your ROI is quickly done and you also provide a second service to your customers who now can quickly browse available restaurants in the area from their smart phone.

The examples are numerous and the options are endless. Missing the boat on mobile can put your company at the bottom of the food chain. There are quite some good companies around that can help you plan your mobile strategy and do the full execution of this plan. Some good examples are Capgemini and Service2Media.

Tuesday, August 07, 2012

Oracle Data Integrator failed Checking operating system certification


Oracle Data Integrator is a comprehensive data integration platform that covers all data integration requirements: from high-volume, high-performance batch loads, to event-driven, trickle-feed integration processes, to SOA-enabled data services. Oracle Data Integrator can be used to communicate between Oracle databases and the Hadoop platform. When working on big-data projects ODI can help you to quickly develop and deploy map reduce solutions within your enterprise landscape.

ODI can be installed on several platforms including Oracle Linux. One of the issues with installing on Oracle Linux is that the latest version of Oracle Linux is currently not supported and will result in an error during installation. The installer will state (in my case Oracle Linux 6.3) the following:

Checking operating system certification
Expected result: One of enterprise-5.4, enterprise-4, enterprise-5, redhat-5.4, redhat-4, redhat-5, SuSE-10, SuSE-11
Actual Result: redhat-6.3

Meaning the Oracle Data Integrator is not certified currently on Oracle Linux 6.3 and secondly the Oracle Universal Installer is identifying the operating system as a redhat-6.3 distribution.


You can resolve this by adding Oracle Linux (redhat) as a certified system to the file used to check what is certified. In the past you could do so by adding a line to the file $basedir/Disk1/install/linux/oraparm.ini . However, in the newer versions of the Oracle Universal Installer a new way of working has been introduced and you have to edit a different file.

You will have to edit the XML file where the prerequisites are stored. You can find this file at $basedir/Disk1/stage/prereq/linux/refhost.xml in the refhost.xml file you will find a couple of configurations which are allowed. I have added the below lines to the file to make Oracle Linux 6.3 a valid configuration.


After changing the XML file and saving it you can restart the installer and you will see that the check is now completed without any issue. I have noticed some differences in different machines where sometimes it is needed to restart the installer and sometimes you can just do a retry. To be on the safe side it is good practice to start the installer again.



Wednesday, July 25, 2012

Oracle web Cache routing only mode


Oracle Web Cache provides not only the option to act as a web cache server, it is also providing you the option to do load balancing over multiple nodes. Having a web cache server balance load over multiple nodes is a logical thing to do as in most cases where you will use web cache you will be serving most likely a high end website which needs to be up and performing all the time.

A less know option from the Oracle Web Cache server is that it can also act only a load balancer and ignoring the web cache part of the solution. In some cases you do explicitly not want to use the web cache however does want to use the load balance options.



To be able to set the web cache in load balance only mode you will have to change the configuration of your webcache.xml file. The .xml configuration file can be located at:

(UNIX) ORACLE_INSTANCE//config/WebCache/webcache_name
(Windows) ORACLE_INSTANCE\\config\WebCache\webcache_name

Within the configuration you will have to set the ROUTINGONLY option to yes. After setting this you will have to restart the web cache server to activate the new settings.

CACHE WCDEBUGON="NO" CHRONOSONPERNODE="NO" CAPACITY="301" VOTES="1" 
INSTANCENAME="instance_name" COMPONENTNAME="component_name"  ORACLEINSTANCE="instance" HOSTNAME="web_cache_host_name" 
ORACLEHOME="directory" NAME="web_cache_name" 
ROUTINGONLY="YES"

When you have done so you can check in the web cache manager if the routingonly part is set. You should see the below message in the administration part informing you that you are running in routing only mode.



pharmaceutical map reduce


The website pharmatimes.com is diving into the results or a report recently published by Oracle on how the pharmaceutical industry is working with data and what the current bottlenecks are.

Around 93% said their organisation is collecting and managing more business information today than two years ago, by an average of 78% more. However 29% of life sciences executives give their company a 'D' or 'F' in preparedness to manage the data deluge; only 10% of the latter group give their organisation an 'A'.


Life sciences respondents say they are unable to realise, on average, 20% of additional revenue per year, translating to about $98.5 million per year, "by not being able to fully leverage the information they collect." Of those surveyed from the pharma/biotech sector, 30% are "most frustrated with their inability to give business managers access to the information they need without relying on the IT team".

Interesting to see is that there is an increase in the amount of data collected and the data potentially available to analysts and business users. Secondly it is interesting to see that there is frustration within the companies that they need IT to be involved when they need to use the collected data. What you see commonly in most companies is that the business has a need for a report or analysis and / or a report and for this they turn to IT. The request for change will be added to the list of work for the developers within IT and they will build and deliver the new reporting functionality to the user who requested it.

When there is an urgent business need to have a new report created this can be frustrating that there is a lead time and the business has to wait until the report is generated. Users in general would like to have a framework where they can quickly and easily build their own reporting and by doing so no longer be depending on the IT department.

Such tools and platforms are available within the market however not commonly deployed due to a couple of reasons.

a) The use of such tooling is blocked by the IT department as they are afraid that it will decrease their value within the company as a department

b) IT claims that the reports and the resulting queries build by the business users are sub-optimal and could cause performance issues

c) The use of the “self build” reporting tool is considered to have a steep learning curve by some people and due to this tooling is not deployed.

Point C is something you can discuss and will depend on the level of employees and their feeling with IT. Also it depends on the tool(s) selected if this is indeed true. However point A and point B can be tackled and should not be holding your company back from enabling users to build their own reports.

Reason A is something that will have to be tackled in the political arena of your company, if management backing is available the IT management should be persuaded to provide the needed support in getting the project started. This will inevitably lead in a decrease of work for the IT department in the form of building new reports, however will increase the need to support the new platforms and can open a whole new area of services for IT. This new area can include also building the more complex and challenging reports.

Reason B is something that is heavily depending on a couple of factors. One of them is how much understanding will the users have about what their questions to the system will do performance wise and how well are they trained in using the tool in a correct manner. Secondly it will depend on the selected tool, how “smart” will the tool create the queries based upon what the user is building with a drag and drop interface. One last factor will be the size of the data you will have available. If you have to query a couple terabytes this will be faster than when you have to query multi petabytes of data.

To remove the reason not to deploy such tools as stated in B involves a more detailed thought and plan. It will depend partially on the tool selection however it will also depend on how you will organize your data. When we look at the rate in which companies are gathering data you can state that for a large number of companies it would be beneficial to look at solutions in the field of big-data. Solutions developed and deployed in the field of big-data look at a different way, a more distributed way, of storing and handling data. If you take the design of your hardware and the way you access data and compute it into consideration you can deploy a platform which is ideal for users who deploy their own written reports and queries.

In a traditional setup as shown below you will store all your data in a single data source and you will have a single node which will take care of the computing of the results and to communicate with the users. For small sets of data this is a way that will work, however, when working with large sets of data this can become problematic as the available resources to the computing node can become a bottleneck. When lost of users deploy their custom written queries on this performance can drop to a no longer accepted level. Due to the nature of the setup scaling out in a vertical way is not an option and you can only do horizontal scaling by adding more CPU’s to your computing node.


In a more parallel way of doing things and within the thinking of how to handle big data you can create a cluster of smaller sub-sets of your data and dedicate a computing node to each set of data. When a user starts a request all nodes will be working a small amount of time on this request and send back the result a node who will collect all the answers and provide it in a consolidated way to the end user. This way of working is providing you a faster way of computing your results and provides at the same time the option to do horizontal scaling by adding more computing and data nodes when your data grows or when the need for more performance arises.


Popular ways of deploying such a strategy is by deploying a implementation of the map/reduce programming paradigm. Companies like for example Oracle and Pentaho are adopting the map/reduce paradigm by implementing hooks to the Hadoop framework who will do this for you.

When selecting a tool that will enable your users to build their own reports and queries it is advisable to look at how this tool is using the map/reduce programming paradigm and how scalable it is for data growth. By taking this into considerations you can safeguard the usability of the tooling for the future when data is growing and the demand on the system is growing.

Friday, July 20, 2012

Infection pattern analysis in Oracle


Quite recently some customers have asked me a somewhat similar question. They all have applications residing in an Oracle database. The application is a standard application build by a third party. During the past years they have been building additions to those applications. Now they come to a moment in time that the third party vendor is providing upgrades to the software. The update will involve a whole set of newly developed or already existing however changed database objects.

The past couple of years they have been building extensions which have caused a version lock-in. Question that is now popping up is how intertwined is are the custom build extensions which the standard code and with the parts of the code that will change. To give a clear answer on this you will have to check the dependencies that are within the application (including extensions).

When unraveling such a puzzle you will have to look at infection path analysis. For example we have the below application which includes an extension. A, B, C, D & E are the standard components of the application. 1, 2, 3 & 4 are custom objects build as an extension. You can see the dependencies towards standard components visualized with the lines coming from the custom objects towards the standard objects.


In the above example all the red objects will change during an upgrade. This means that the customized objects you should look and, based upon this view, are object 1 (depending on changing object A) and object 3 (depending on changing object A & D). 

This is a first generation infection path which only shows you the direct relations between custom objects and changing objects. You should take this a step deeper. In the below example we have gone a dependency level deeper and you can see that 4 is depending on 3 and 1 is depending on 2.



As we potentially have to change 3 to cope with the changes in A & D we also have to look at the potential code change of object 3. And if 3 is changed this might affect object 4.

Object 1 is depending on object 2 and in this level of the infection 2 is not changed so this not changing anything on the list of objects to check.

With every level you go deeper into an infection pattern you will see more objects are potentially “infected” by the change and should have a proper look at by a developer. You can also create “resistant islands “which are in no way affected by change. Potentially you can have your entire database analyzed with a proper infection pattern algorithm. If this is wise is for debate because it can cloud the usability and the correctness of your outcome. In general I do tend to think a 3 level of 4 level deep infection pattern analysis is proper to be used within Oracle databases.

When you are trying to develop your own infection pattern algorithm for a database it is good to have a look at a couple of things.

Within the database dependencies are stored in sys.dependency$ and more information about the objects are stored in dba_objects. Combining the 2 in a query will give you a headstart in building your algorithm. As a simple example if I wanted to know something about object 123321 I could fire of the query;

select 
      objects2.owner as dep_owner,
      objects2.object_name as dep_object_name,
      objects2.object_type as dep_object_type
  from 
      sys.dependency$ depen,
      dba_objects objects2
where 
      depen.p_obj# = 123321
      and objects2.owner not like 'SYS'
      and objects2.object_type not in ('SYNONYM')
      and objects2.object_id = depen.d_obj#
order by 1, 2, 3;

If you build this into a more profound PL/SQL script and you would add a list of changing components to start with you could create a dependency list. The easiest way is to output it to a flat file and provide it to your developers and consultants as a reference of things to look into as they are most likely to be hit by the upgrade.

However, as we are humans and humans are somewhat visually and like to see things in pictures a great way to do this is not to output it to a flat text file however build as a secondary output a file that you can parse via DOT. DOT is a markup language used to plot relation diagrams as the ones above used in the examples. As DOT is a free and opensource way of doing this and it saves you hours and hours of building diagrams in MS Visio I do think it is worth looking into the DOT Language documentation.

Tuesday, June 26, 2012

Configure and deploy Oracle NoSQL


When you are starting to use the Oracle NoSQL key-value store solution you are not done by simply installing the Oracle NoSQL database. Installing the database is quite simple and straightforward. It is a matter of deploying the software, run a commandline configuration wizard and start the NoSQL deamon. The next step before you can start using the NoSQL implementation is to configure your KVStore. During deployment you have created (most likely) a number of hosts running a NoSQL deployment. One of them is the KV Administrator node which runs a management webinterface on port 5001 (by default). Your first step should be to connect to this admin console.  The console will take you into a couple of steps.


In the above image you can see the first screen when you open the administrator console. You have to state 2 things. The Store name is a name your key-value store and you can select a meaningful name. Second part is to enter the datacenter name, this is the name of your physical datacenter and can be used to identify the location of your key-value store. You could however abuse this field for other information, for example the name of the customer or department using the key-value store.

As soon as you have completed the above step you will be presented with a screen similar to the screenshot above. On the right side of the screen you can see 3 steps are already completed with the state SUCCEEDED, namely; DeployDatacenterPlan, DeploySNPlan and DeplayAdminPlan. 


Next is to deploy storage nodes. You will have to do this for every hosts you would like to deploy a storageNode on. Do note that on your admin node you already have a storage node deployed. You have to provide some needed information.

Plan Name: The name of your plan, when directly deployed you can go for the default name, in case you want to store in and use it at a later stage it would make sense to give it a meaningful name.

Datacenter: state the datacenter you want to deploy your StorageNode

Host: The network host name of the host you want to deploy your StorageNode on. This should be a host where you have deployed a Oracle NoSQL stack.

Registry Port: The port number where your KVstore is running on the target host.
Comment (optional): as stated, optional.

Now you have the option to use the Create Plan option which will store you plan for later execution or do a Create and Execute Plan which will directly deploy your StorageNode. When directly executed you will see in the right side of your screen the progress and (hopefully) a message for Plan-4 DeploySNPlan with status SUCCEEDED.



Next step is to deploy a store (Key-value store) on top of your storage node cluster so you can really start to use your Oracle NoSQL implementation. In the same screen as you used to deploy a StorageNode you can now select “Deploy a Store”which will deploy the store for you on all storage nodes or a sub-set of the storage nodes. Some details have to be provided:

Plan Name: The name of your plan, when directly deployed you can go for the default name, in case you want to store in and use it at a later stage it would make sense to give it a meaningful name.

Storage Node Pool: In this case we have selected AllStorageNodes to deploy them on all nodes available.

Replication Factor: The replication factor is something you have to think about before you quickly state a number (currently in the above screenshot you see 3, in our real-life example we use 2 as we only have 2 nodes). Replication factor states how many times a partition of data is stored in the cluster. When stated 3 it means that at 3 locations in your cluster a copy of a partition is stored.

The number of nodes belonging to a replication group is called its Replication Factor. The larger a group's Replication Factor, the faster its read performance (because there are more machines to service the read requests) but the slower its write performance (because there are more machines to which writes must be copied). You set the Replication Factor for the store, and then Oracle NoSQL Database makes sure the appropriate number of Replication Nodes are created for each replication group that your store contains.

Number of partitions: Also named shards, this indicates the number of partitions you will chop your data into. A high number of partitions is good however if you have to many partitions this can again have a negative effect on your performance. Based upon the read/write intensity you have to check what the best number is for your setup.

When given all the parameters you can select “create plan” or “Create and Execute plan”


When you have deployed your store it can be good to check your entire setup of your cluster with the topology browser. Here you can see how your configuration is done and how things are arranged. This topology screen can also be used during day-to-day administration to get a good view of the current status of your NoSQL deployments.

Thursday, June 21, 2012

Oracle Data Masking with Oracle Enterprise Manager


Commonly companies who are serious about IT and their IT infrastructure and their IT landscape do tend to a DTAP strategy. DTAP stands for Development, Test, Acceptance and Production environments. Commonly DTAP landscapes are used in environments where companies do create their own software or customizations on standard software. This means that for every production system you will have 3 separate environments to be used by developers, testers and the business to approve the changes before they will be deployed in your production environment.

In situations where multiple projects for the same production environments are done simultaneously it is not uncommon to have multiple DTA environments while having a single production environment. When you are working with multiple development projects at once it is of vital importance to have a correct version and configuration management in place to ensure that when the projects are combined in the single production instance it is able to work integrated and is not undoing some of the work done in the other project.

Almost as important as a good configuration and version management is the management of your none-production environments. This is not only the case when working with multiple projects and changes at the same time. This is evenly important when developing in a single DTA(P) setup.  Your developers and testers are in need of environments that are as close to the production situation as possible. Commonly production systems are cloned to Development, test and Acceptance environments to enable your developers and testers to do their job.



Technically it is a simple exercise to clone a production environment to a none-production environment. At least, this is the case for most Oracle products. Even though it is technically it is a simple exercise it can be a complicated exercise from a legal, risk and security perspective. Companies who do not pay attention to this process in their company can end up in the situation that confidential production data becomes available to developers. A developer for example working on customizations in the Oracle E-Business suite payroll modules can get access to the entire payroll information of your corporation. Secondly, when not paying attention your developers can gain access to production passwords as most developers have unlimited access to the application and database. An example of such an exploit on Oracle E-Business suite passwords can be found in my blogpost from December 2006. Currently most companies do understand that they have to reset production passwords during a clone before releasing it to developers and testers. The understanding of masking and/or sub-setting your production data before releasing it to none-production systems is however not that common. 

Next to changing passwords when you move your data from production to none-production systems you will have to consider the strategy on which data can be accessed by your developers which is not critical or confidential data. Oracle is providing a solution for this in the form of Oracle Data Masking solutions which are an integrated part of Oracle Enterprise Manager. By using Oracle data masking you can create profiles of your data and make sure confidential data is masked (changed to none confidential data) and you can do sub-setting.


As you can see in the above diagram you can create an Application Data Model in which you  can define which data has to be extracted from your production system. The extracted data will be pumped to the datamasking and/or subsetting 

Subsetting:
The intention of subsetting is to decrease the amount of data that is transported to your none-development environments. For example, in your Application Data Model you stated you want to extract all the information from your Order Management module. This will ensure that you get ALL the data from your Order Management module you have indicated that needs to be extracted. In subsetting you can define you would like to have for example only the orders from the past 2 months. In most cases your developers and testers do not need the full set of data to perform their job. This is not only resulting in shorter times to move the data it will also reduce the amount of storage needed in your none-production environments.

Datamasking:
The intention of datamasking is to ensure no confidential data is moved out of your production database to your none-production database. This is done while keeping the integrity of your data. For example, you might have customer creditcard numbers in your Order Management module data. You do not want this data to be moved and to be accessed by your developers and testers however you do want to have creditcard numbers with the same logic in it. You could for example have some logic in your application to check if the creditcard number is a valid number. Due to this reason you cannot simply substitute the original creditcard number with a random number, you want it to have the same structure as a official creditcard number. The same applies for example for social security numbers, zip-code information, etc etc.


In the above screenshot you can see the format library, here you can define the format of a to-be substituted value. You can define how a creditcard number should be formed. By using this you can substitute values by “random” values while keeping the integrity. This enables your developers and testers to work on production data which is made anonymous and where the confidential data is substituted by none-confidential data.

For some Oracle products there are standard libraries available, if you have a custom build application you will have to create your own strategy. Even though it takes some knowledge and effort to initially create this you will benefit from it and the security of your confidential data is not compromised.

The below video shows you an example of Oracle Data Masking while using Oracle Enterprise Manager 11G. Do keep in mind that a newer version of Oracle Enterprise Manager is currently available.

Friday, June 08, 2012

customize Oracle Enterprise Manager

When using Oracle Enterprise Manager in your organization it will most likely be used by a number of people with all different kind of roles and responsibilities. DBA’s will be interested in the information from the database at first hand, Technical Application Maintenance consultants will most likely be interested in how the middleware is doing and infrastructure specialist will focus on their own parts of the stack.

Within Oracle Enterprise Manager you can give everyone the option to look at all the parts of the stack however based upon a certain role people do want to have focus on their part of the stack. This means that a standard dashboard is not very usable, some people will want to focus on the entire stack for a specific department or customer. Some want to focus on the database and others want to focus on hardware.

Oracle Enterprise Manager provides you with a couple of standard dashboards which do provide a point from which you can start. Selecting a dashboard that is close to your role is the first step, after that you can customize your dashboard to show exactly what you want.

The below video shows how you can customize your dashboard. In this video you get a quick first impression to help you getting started.

Friday, June 01, 2012

Oracle Enterprise Manager authentication framework


Oracle Enterprise Manager, which is current version Oracle Enterprise Manager 12C, can used within Oracle dominated IT landscapes for monitoring and maintenance purposes. Oracle Enterprise Manager 12C is the cloud enabled version of the previous versions of Oracle Enterprise Manager. The main goal of Oracle Enterprise Manager is to be the central hub for administrators to monitor and maintain all components within the landscape. This can include the Oracle databases and Oracle applications within the landscape however it can (and commonly will) include components like hypervisors, operating systems and hardware components. This enables you to have a 360 degree view of all components that are part of your infrastructure and will provide you the option to see a full chain of components when pinpointing the root cause of an issue.

Having a central Oracle Enterprise Manager system within your landscape will provides numerous benefits to your IT operations as well as to your business operations. It will however mean that you have one central point linking to all components and all systems will communicate with the centralized Oracle Enterprise Manager installation. Due to this reason it is of vital importance that, when implementing, a good portion of time is dedicated to security questions. To ensure save and encrypted communication and to ensure that users who are allowed access to the application have only access to what is needed for their role can be done via setup. One of the things you will need to consider at the beginning of the implementation of Oracle Enterprise Manager is how your users will be authenticated.

A number of options are available within the Enterprise Manager’s authentication framework. The authentication framework within Oracle Enterprise Manager provides pluggable authentication
Schemes which can be used to handle user Authentication.

Oracle Access Manager (OAM) SSO:  Oracle Access Manager is the Oracle Fusion Middleware single sign-on solution. The underlying identity stores will be the Enterprise Directory Identity Stores being supported by Oracle Access Manager.

Repository-Based Authentication: This is the default authentication option. An Enterprise Manager administrator is also a repository (database) user.

SSO-Based Authentication: The single sign-on based authentication provides strengthened and centralized user identity management across the enterprise. After you have configured Enterprise Manager to use the Oracle Application Server Single Sign-On, you can register any single sign-on user as an Enterprise Manager administrator.

Enterprise User Security Based Authentication: The Enterprise User Security (EUS) option enables you to create and store enterprise users and roles for the Oracle database in an LDAP-compliant directory server.

Oracle Internet Directory (OID) Based Authentication: Oracle Internet Directory is a LDAP v3 compliant directory built on the Oracle database and is fully integrated into Oracle Fusion Middleware and Oracle Applications.

By default the authentication framework will be using the Repository-Based Authentication schema to authenticate users during login. When operating with a rather small team of administrators this can be the best way of working. However, as team sizes grow it is advisable to investigate other options of authentication. My personal rule of thumb is that if the number of users using Oracle Enterprise Manager is more than 25 it is beneficial to look for more centralized solutions.

Sunday, May 27, 2012

Finding objects in Oracle via user_objects

When working with Oracle databases in within a large company with multiple customers (departments or external customers) you will also be faced with the situation that not all databases are alike. Some databases will have a strict datamodel and a strict documentation policy. From those databases you will know exactly what is in the datamodel and you will be able to find all documentation of it. This is normally the case with all production databases and the associated D(evelopment), T(est) and A(cceptance) environments. However when it comes to the "play" environments and the environments used for research and development you are not always that lucky. Specially when you are looking into a database which is used by multiple developers to work on small coding projects and using it to learn new tricks of the trade.

In those cases it is not uncommon that you have to reverse engineer some parts of the code and from time to time find lost objects. Someone stating something like "yes I have stored that in a table a year ago and called in something like HELP" is not uncommon. In those cases you will have to start looking for the object and to do so your best friend is the USER_OBJECT table in the Oracle database.

The USER_OBJECT table holds information on all the objects available tot the users. This will help you finding the table you are looking for. Some people like to directly use CAT and do something like;

SELECT
      *
FROM
    CAT
WHERE
     TABLE_NAME LIKE 'HELP'
This however will only give you the table name (HELP) and the table_type (TABLE). Secondly you will have limited options to search. You can imagine that the person stating that the table name was HELP might have some mistaken as it is more than a year ago he created it. It might very well be that the table name is USERHELP and it might also very well be that a lot of objects have the "HELP" in their name. I do personally think that using USER_OBJECTS gives you just that extra power above CAT to find the correct object quickly.

Below you see a describe of the USER_OBJECTS table:
Name           Null Type          
-------------- ---- ------------- 
OBJECT_NAME         VARCHAR2(128) 
SUBOBJECT_NAME      VARCHAR2(30)  
OBJECT_ID           NUMBER        
DATA_OBJECT_ID      NUMBER        
OBJECT_TYPE         VARCHAR2(19)  
CREATED             DATE          
LAST_DDL_TIME       DATE          
TIMESTAMP           VARCHAR2(19)  
STATUS              VARCHAR2(7)   
TEMPORARY           VARCHAR2(1)   
GENERATED           VARCHAR2(1)   
SECONDARY           VARCHAR2(1)   
NAMESPACE           NUMBER        
EDITION_NAME        VARCHAR2(30)  
it might be wise to give the USER_OBJECTS table a good look and play arround with it some more to understand it correctly. For example it will be able to show you all the objects and it is not limited to tables only for example.
you can find out what kind of objects are used within the database by executing the below query. This will give you a list of used user_objects.

SELECT 
      DISTINCT(object_type)
FROM 
    user_objects 
ORDER BY 
        object_type
back to question of the "HELP" table. You know for example that you are looking for a table so you can filter on object_type to only show you the table objects. Secondly you know that it most likely has "HELP" in the name so you can filter for all objects having "HELP" as part of the object_name and secondly you know it is created 11 or more months ago so you can use this as a filer on the created date field. As you can see, it gives you just a little more options then using the CAT option in your Oracle database.

Wednesday, May 23, 2012

Children will be the early adopters of 3D printing


Supermarkets are currently using children and the gathering behavior of humans to lure customers into their shops. By giving a collectable by every $20 of groceries to the customer for the children to collect they create an emotional buy-in. Children collect them, the swop them at school and you are not considered cool and part of the “inner crowd” when you cannot share in the fun of collecting and swapping. Parents always do want their children to fit in and for this reason they might even change their normal supermarket for another when their children are begging them for the latest collectable toys they get for free.

Looking at the way 3D printing is going we might see in the near future very affordable 3D printers. You can feed your 3D printer with a model and it will print it for you. If we combine this trend with the toys children get we will see in the near future that children will not get the toy itself however will get a QR code corresponding with a one-time print job for a 3D printer. Once scanned the model will be downloaded via a one-time download link and printed directly. After that the QR code will become invalid.

The impact of not giving away toys but giving away the model will make supermarkets and other vendors a whole new business model. It will also enable supermarkets adopt more and more this strategy because the only investment will be a downloadable 3D model and a QR code printed to a small coupon. The production and shipping of the toys is no longer on the costs of the supermarket but rather on the parents who will bring the QR code to their children and who will have to pay for the raw material for the 3D printer.

As soon as 3D printing becomes only a little bit more mainstream we will see that companies will adopt this and by doing so promote the purchase of 3D printing. Even though 3D printing is promising it is currently in its first stages of developing. However we will see this picked up in the coming years and not only merchandise will be printed, within the near future the business model of the “make industry” will change and we will see a lot more products which you can download from the net and print it yourself.

While this is considered a good deal for some it will also have its impact on other parts of the market and the industry. The make industry will notice this at first in the products which are produced cheaply in low price countries. The merchandise industry and the low end consumer products will see a shift of making them somewhere in China to downloading and printing it themselves. This has not only an impact on the production part of the chain but also on the logistical part of the chain as the products no longer need to be shipped.

This is something that will reshape the make industry and where we will see a lot of chains in currently standard ways of doing business. However, the road to adoption is via children and the merchandise from supermarkets.

Friday, May 18, 2012

Oracle NoSQL configuration

The Oracle NoSQL database is a very simple to deploy NoSQL key-value store which requires almost no setup. However keep in mind the almost part. There are some things that you have to configure. You can configure this via the commandline or by deploying it with a correct config.xml file. If you have not configured the NoSQL database and/or did not deploy a correct config.xml file you will end up with an error message like the one below. What you can see in this error message is that we are trying to start the NoSQL KVstore and that it is looking for the config.xml file however is unable to locate it.


05-05-12 12:20:16:09 CEST INFO [snaService] Starting, configuration file: /home/nosql/kv-1.2.123/config.xml
05-05-12 12:20:16:42 CEST SEVERE [snaService] Failed to start SNA: IOException parsing file: /home/nosql/kv-1.2.123/config.xml: java.io.FileNotFoundException: /home/nosql/kv-1.2.123/config.xml (No such file or directory)
java.lang.IllegalStateException: IOException parsing file: /home/nosql/kv-1.2.123/config.xml: java.io.FileNotFoundException: /home/nosql/kv-1.2.123/config.xml (No such file or directory)
    at oracle.kv.impl.param.LoadParameters.load(LoadParameters.java:181)
    at oracle.kv.impl.param.LoadParameters.getParameters(LoadParameters.java:64)
    at oracle.kv.impl.util.ConfigUtils.getBootstrapParams(ConfigUtils.java:81)
    at oracle.kv.impl.sna.StorageNodeAgent.start(StorageNodeAgent.java:301)
    at oracle.kv.impl.sna.StorageNodeAgentImpl.main(StorageNodeAgentImpl.java:704)
    at oracle.kv.impl.util.KVStoreMain$3.run(KVStoreMain.java:139)
    at oracle.kv.impl.util.KVStoreMain.main(KVStoreMain.java:319)


This means that the issue can be resolved quite easy by deploying a config.xml file. You can create one and deploy it by using something like VI. The file should look like the one below:

<config version="1">
<component name="bootstrapParams" type="bootstrapParams">
<property name="hostingAdmin" value="false" type="BOOLEAN"/>
<property name="adminHttpPort" value="5001" type="INT"/>
<property name="storageNodeId" value="0" type="INT"/>
<property name="hostname" value="nosql0.terminalcultexample.org" type="STRING"/>
<property name="registryPort" value="5000" type="INT"/>
<property name="haPortRange" value="5010,5020" type="STRING"/>
</component>
</config>


if you are not that comfortable with building your own config.xml you can use the makebootconfig command to build the xml file for you as shown in the example below:

java -jar ./lib/kvstore-1.2.123.jar makebootconfig -root /home/nosql/kv-1.2.123/ -port 5000 -admin 5001 -host nosql0.terminalcultexample.org -harange 5010,5020

Thursday, April 19, 2012

NoSQL graph database


When talking about big data most people do start to get a general idea of what big data is. The industry and the market is still trying to create a single picture of what big data is. However this will be very hard as we will be unable to state hard that data is big data from this volume on. Oracle is trying to give some guidelines; other companies are trying to some guidelines. I personally think it will not really be possible to give big data hard borders to be defined in and I do see that as a good thing. However one of the bad things is that a lot of people are talking about it and only a limited number of them do understand the bigger picture and the technological components of it.

If we take for example NoSQL which is in most big data solutions a technology component people do tend to think it is one type of database however several companies (and opensource teams) do build their own “version” of it. NoSQL is however not a single type of database, it is a grouping name for a large number of database types who do have some common ground. The nosqltapes.com project is trying to collect a number of interviews on what NoSQL is. In the below video a high level discussion is shown where Graph Databases are explained and why and when it would be good to use a graph database.  



Tuesday, April 17, 2012

The legal side of the cloud


Cloud computing is one of the things that is to be stated as a game changing revolution in the IT. Depending on your definition of cloud computing this can indeed be true. And without any doubt and with any form of cloud computing people (and companies) are more empowered to start something new at a very low cost. If you had to start an IT project a couple of years ago you where in most cases in need of hardware to develop and run your solution on. If you where trying to start a new business you needed at least some investment in hardware to start your startup. In both cases it would mean a huge upfront investment. With cloud computing and namely with cloud hosting you can now order a number of servers for a relative low cost with only your credit card. You do not need to buy your own hardware, install it, maintain it and host it. It will simply be done by one of the cloud hosting vendors.

Meaning that, for example, if you are developing some reporting solutions on a departmental level you no longer have to go to your IT department you can simply order one or more servers at a cloud vendor and start developing what you need and start using it. This sounds like a promising move and like a way which will start a lot of innovative new projects.

I personally do love the idea that you can start a project that easy and that you can order servers that easy without the need for large upfront investment. I do also believe it will help startup companies to really start and it will help businesses to move away from the sometimes difficult IT domain and help them on focusing to their day to day business. So in general I am a big fan of cloud computing however there is also another side to the story.

When dealing with data you always have to keep in mind the security of your data. In case you like to create an analysis tool for your stock levels you can put this in a server in the cloud and do your computations on it. A couple of things to keep in mind are, how valuable is your data, can you drive business if it is down, how secure is the connection to the cloud and how secure is the solution you will deploy on this cloud server? These are things that are often overlooked. Big cloud vendors like Amazon are not very keen on providing you with a SLA which means that if they are down they are down. So you have to think about, what will happen if it is not available. Also what you have to consider is how valuable is this data and could it leak to the outside world? And one point very often overlooked is how secure is the connection I am using to upload the data to the cloud and to retrieve the computational results?

In case of stock levels this is not even that hard however as soon as you start talking about customer data you have to consider this is even more confidential. In some countries there are laws that state that you have to protect this data and that you are obliged to certain rules and regulations for security. And to take a next step, in some cases the law will state that you cannot put it in the cloud just that easy.

Most cloud vendors are currently located within the US and due to this are under US law. This means that the US government can demand access to your data without you even knowing it by making use of the patriot act. The patriot act is on a collision course with some other laws which might apply to the country where your company is located. If you, for example, are located in Europe you will have to take into consideration the data protection act. If you have data that has to comply with the data protection act you cannot make use of systems, and cloud solutions, that fall under US law. Most companies do think they do not have to comply with the data protection act in Europe however you have to comply quite quickly if you have some private data of customers and citizens in your system. When dealing with data of governments you almost always have to comply with this.

More and more countries are realizing that data placed in the cloud and physically within the US or hosted by a company outside the US however where the highest legal entity of the organization is a US based company is subject to the patriot act. In the patriot act it is clearly stated that the US government can gain access to this data without informing the owner of the data. To protect vital parts of the infrastructure and to ensure the security and privacy of their citizens countries are now deploying laws to prevent data from moving outside the EU or even outside the country. Some Scandinavian countries have already stated that government data cannot be placed on servers based in the united states and recently a political flame war has erupted between the United states and Australia.

"The United States' global trade representative has strongly criticized a perceived preference on the part of large Australian organizations for hosting their data on-shore in Australia, claiming it created a significant trade barrier for U.S. technology firms. A number of U.S. companies had expressed concerns that various departments in the Australian Government, namely the Department of Defence had been sending negative messages about cloud providers based outside the country, implying that 'hosting data overseas, including in the United States, by definition entails greater risk and unduly exposes consumers to their data being scrutinized by foreign governments.' Recently, Acting Victorian Privacy Commissioner Anthony Bendall highlighted some of the privacy concerns with cloud computing, particularly in its use by the local government. He said the main problems were the lack of control over stored data and privacy, in overseas cloud service providers."
You can read more on the current way of thinking in Australia at delimiter.com.au

In my opinion it is good that companies and politicians are thinking about what the cloud can mean for the security of citizens, the privacy of citizens and even the security of countries itself. Cloud can be a good thing, it is a good thing, it will help innovation however when using a cloud vendor it is good to take into consideration some security and privacy points and not simply deploy your application wherever you like for the lowest price.


For a first impression on how the situation in the world currently is and where your data is the most secure you can check the forrester website. Forrester launched an interactive website where you can obtain more information.