Do you know a way to connect Java and the Tarantool key/value storage? On the Tarantool web-site I can see connectors for C, Ruby, PHP, etc., but no connector for Java.
I know that Tarantool supports the Memcached protocol (with a lot of Java clients for it), but I need a native Tarantool protocol connector for Java.
At this point a full-featured driver is ready, check out http://github.com/tarantool/tarantool-java
The other answer is slightly outdated, so I feel that this topic needs an update about the current situation.
There are two Java drivers present for Tarantool as of 2021:
An "old" tarantool-java, marked as deprecated, since it does not support vShard cluster, Cartridge, Tarantool 2.x+ features like new UUID and decimal types, has some problems with API and architecture and is out of maintenance for a long time. However, as of now, it's the one that supports JDBC interface, so you may choose it for connecting to a single Tarantool node via JDBC.
A "new" cartridge-java, which is currently actively developed and maintained, and provides a foundation for other necessary connector modules like cartridge-springdata and cartridge-spark. This driver uses Netty for the transport layer, the official MsgPack library for serialization, and provides support for single Tarantool nodes, vShard cluster, Cartridge and new Tarantool 2.x+ features. This driver is compatible with 1.10 Tarantol series too.
So, for all cases except JDBC for a single Tarantool node (currently), I'd recommend using cartridge-java.
Related
I am trying to build a Java application which uses JanusGraph(with dynamodb backend) which is hosted on a remote machine and has gremlin server started.
I want to know what my options are when writing a client for this setup!!
1) Any OGM like FERMA. Looks like there is no support.
2) Use gremlin java driver and write the client code using Cluster Class.
3) Anything else ?
I am the lead developer on Ferma.
Obviously I am a bit bias but ferma has fairly complete documentation (I hope), and we always respond on gitter and to issues within 24 hours. So support shouldnt be much of a problem.
I havent seen any complete OGM options outside of Ferma but there are a few obsolete projects like totorom, frames, peapod, and similar you may want to look at. I am afraid they will have even less support than ferma though.
To your question, to connect to JanusGraph there are several options depending on the framework you using. You basically configure any options you need in the JanusGraphFactory then connect to the desired host with the following call. Then just pass this graph object into the constructor of a FramedGraph.
Graph graph = JanusGraphFactory.open('cassandra:localhost')
There is a bunch of different cassandra's clients in now days. Most of them was built on top of Thrift driver and then adopted to use DataStax Java driver. I can name Kundera and Astynax as biggest of them. The last one has only a beta support for the Java driver. And there is an Achilles client that build on top of DataStax Java driver and supports all new Cassandra features. It's a little bit younger and I know nothing of it's use cases in production. But it looks very promising.
So I'm new in NoSQL world ask you to give me a hint - with client to use with new project? Suppose it will be a big solution with 33 nodes Cassandra cluster and a lot of different kinds of queries to db.
Thank you in advance.
If the platform you're on has a client from DataStax, use that. The DataStax drivers for the jvm and .NET (and possibly others) are quite polished, support all available features, and deal with connection complexity internally very nicely. In addition, if you're looking to do Spark analytics, the DataStax Spark connector is the only option supporting good locality, and it uses the DataStax java driver internally.
Can anyone recommend a good way to create scripts in java that will work with an older Cassandra 1.0.10 database? I'm having trouble finding stuff online. Is thrift a type of driver?
Thanks!
Apache Thrift is way to connect to the Cassandra RPC server 1).
In the Cassandra source three there is a file /interface/cassandra.thrift which is an interface description file (IDL) that can be fed to the Apache Thrift compiler in order to generate Java code. By means of this Java code you will be able to access Cassandra. The whole process is described in more detail in the Cassandra wiki.
However, it is recommended to use a more high-level client library instead, because the raw Cassandra API is quite complex. You'll find the existing libraries, such as Hector, much more handy for your task.
1) Some more details about Thrift can be found in this answer.
What are modern approaches for Reliable multicasting in Java world?
Searching the Web, I've came up with JGroups and JRMS. JGroups seem to be an overkill in my situation (I want to have a set of identical nodes which cooperate together and make them able to join this group by notifying every existing node). JRMS looks like being already dead.
I was unable to find any particular implementation of PGM protocol for Java.
Have a look a jmdns which implements Zeroconf (Apple Bonjour) in pure Java.
Very useful if you just want to know who else is out there, and let them know about you.
http://jmdns.sourceforge.net/
Hazelcast says it supports messaging, amongst other things (distributed maps etc)
https://hazelcast.org/
It is used as library in other distributed Java applications such as OrientDB, Apache Camel, and has plugins for Java Application Servers, such as Tomcat Session Replication.
I need to query an IBM Domino data store that was populated using Lotus Notes from within a Java application. I am hoping that IBM followed the JDBC design pattern so that I can implement similarly to what I have done to get data from Oracle. Where should I start?
I am aware that IBM does not support JDBC for Domino. What I need is an equivalent.
Searching Google for "java lotus notes jdbc" yields this note from IBM:
Question
Is Lotus® Domino® Driver for JDBC (LDDJ) supported on current versions of IBM® Lotus Notes® and Lotus Domino?
Answer
IBM no longer provides a Notes JDBC driver since Java developers may utilize the Notes.jar to make API calls into Notes databases. The Notes JDBC driver is no longer provided nor supported.
This really is no true equivalent to a JDBC driver if by that you mean something that works in a similar way. The sql style interface provided by NotesSQL and the JDBC driver was always severely limited.
To directly interact with the data with java you need to use the Notes java api using Notes.jar (local) or NCSO.jar (remote IIOP). This gives you a notes style access to the data. Your data is organized as databases of documents containing items. The documents are indexed into views and an individual document can be indexed by multiple views. There are also various built in search facilities.
If you just need to provide external access to a relatively fixed query a web service built into the application is a good way to go. Internally this would use the native notes api (java or lotusscript) and you'd probably want to get the developer of the database o do that for you.
If you really need to have free access to the data and want to query it with SQL you will have to export it to an RDBMS through a number of tools and some of these can keep your data in sync. Since there is no generic way to look at Notes data as simple tables you need to configure this export to match the application requirements.
Lotus Notes/Domino isn't really an equivalent data store to something like Oracle, so finding something to slot into your existing solution could be tricky. As matt b suggested, you could try using the Notes Java api supplied by notes (You should be able to get this from a notes client install). Another option is to use the wrapper api Domingo which takes some of the edges off notes.jar (which is itself a wrapper for the C apis).
A simpler option might be to use http and xml (assuming you only want to read data(?)). If you enable http on the domino server, you can get xml data out of views.
http://www.yourserver.com/db.nsf/viewname?readviewentries
Salgiza's answer to this question has more detail on this.
Lotus Notes JDBC Driver might answer some of your questions.
Lotus Notes is not a relational database, I do recall from some time ago, they started supporting java instead of lotus script, there is a good chance that they support an external java API.
According to wikipedia:
External to the Lotus Notes
application, IBM provides toolkits in
C, C++, and Java to connect to the
Domino database and perform a wide
variety of tasks. The C toolkit is the
most mature and the C++ toolkit is an
objectized version of the C toolkit,
lacking many functions the C toolkit
provides. The Java toolkit is the
least mature of the three and can be
used for basic application needs.
So if you can get your hands on a toolkit you should be ready to roll.
I noticed on the toolkit page that they support an odbc driver,
so you should be able to use the jdbc-odbc bridge.
OpenNTF have released a JDBC driver see: JDBC Access for IBM Lotus Domino
Sun & Son www.sunandson.com have just put their Notes JDBC Driver through 12 months of IBM certification - this is a fully supported product - and has been Cognos JDBC certified
DBC Driver for Notes will be supported in Cognos Q3 - 10.2.1 Fix Pack 4
and then in Q4 - it will be in the main point release 10.2.2
Here are a few things to keep in mind about the DomSQL driver:
The client component is pure Java code, so it should run on any platform
The server component, which runs on the Domino server, includes some C code
The upcoming release of the Data Modeler provides seamless integration of the DomSQL driver and a new Metadata Library module, which aggregates all of the Data Modeler metadata definitions across the enterprise.
Although there is an open version of the DomSQL driver available for download from the OpenNFT.org site, the Sun & Son enhanced DomSQL driver has gone through the Cognos certification process and is the only version that will work with Cognos.
There is a NEW JDBC Driver for IBM Notes Domino that is IBM Certified http://www-304.ibm.com/partnerworld/gsd/solutiondetails.do?solution=51151&expand=true&lc=en