Akka (JVM) event-sourcing in Azure? - azure

I am trying to deploy an Akka application on Azure, that uses the journal persistence plugin.
I cannot find a working combination when it comes to the persistence plugin I should use.
So far I looked into:
akka-persistence-mongo and Azure Document Store with Mongo driver: it does not work because akka-persistence-mongo is not compatible with the latest reactive-mongo version that supports SSL
akka-persistence-jdbc and an Azure SQL server: it seems the akka-persistence-jdbc is only compatible with Slick H2, Oracle and MySQL drivers
I do not have any strong performance requirements, this is why both solutions would have worked.

My best guess for the moment is akka-persistence-redis with Microsoft Azure Redis.
I am proposing a contribution to this plugin to make it compatible with Microsoft Azure Redis (authentication, as well as a strange error when calling zrangebyscore that I do not have with a local Redis).

Related

Gremlin - best approach for querying Titan db from Node.js

I am using Titan graph db with Cassandra and Elasticsearch, Node.js and building RESTful web services.
I am confused whether to connect to Gremlin server using HTTP or Web Sockets.
Please share your learnings and let me know if there are any good reads or video tutorials on this.
Note: Titan is no longer maintained, you should switch to JanusGraph, which was forked from Titan and is maintained by an active community of users and developers.
You can use https://github.com/jbmusso/gremlin-javascript which can be found in the "Language drivers" section of the Apache TinkerPop site.
You can find sample code in https://github.com/jbmusso/gremlin-javascript/tree/master/gremlin-client

How can I view an Azure CosmosDb using Pycharms or IntelliJ?

I can see loads of drivers, but nothing for DocumentDB.
I did try searching for an appropriate driver, but I found nothing.
My DocumentDb is in Azure, so I have a URL and primary key, but I was unable to see how to connect via Pycharm using the "Data Source from URL" option.
How can I connect my DocumentDb to Pycharm (or IntelliJ) database explorer?
Cosmos DB is not a relational database, and you cannot simply connect to it as such.
It supports several NoSQL protocol variants: DocumentDB (native document store), MongoDB API, Gremlin graph api, and Azure Table API. Not possible to connect via a relational database driver.
If a tool doesn't explicitly support one of the above-mentioned protocols, you simply won't be able to use it, and will need to work with a different tool. And which tool you choose is really up to you (tool recommendation questions are off-topic).
You can connect to CosmosDb from IntelliJ, DataGrip or other JetBrains software using a JDBC driver. JDBC drivers are software components that allow Java applications to interact with dtabases. (I think that JetBrains IDE's are all based on IntelliJ, which is Java software). I think there are probably a few JDBC drivers around that allow connections to a CosmosDb database and run SQL queries.
For a specific connection example you can look at CData who makes a collection of drivers including a JDBC driver that can be used to connect to CosmosDb from any tool that allows their JDBC driver to be used. They have instructions that are located here for using it with IntelliJ. I have been able to use the instructions located there to connect to a CosmosDb instance from JetBrains DataGrip and run queries against the database. I still have some things to work out but it does allow me to create a successful connection and run simple queries.

What is Azure Redis Cache?

What is Azure REDIS Cache? How to use it? When to use and when not to use it? Can I use it for a simple c# application which accesses data from MS-SQL server?
What is best source to get started with Azure Redis cache?
Azure Redis Cache offering is a Software as a service (SAAS) offering of the opensource Redis cache. You should be able to get started with the resource below:
https://azure.microsoft.com/en-in/services/cache/
https://azure.microsoft.com/en-in/documentation/services/redis-cache/
http://redis.io/documentation
There is good support for C# via 'StackExchange.Redis' nuget package. However, please explore if your application needs or will benefit from a cache solution before you get to the implementation.
Azure Cache for Redis provides an in-memory data store based on the Redis software. Redis improves the performance and scalability of an application that uses backend data stores heavily
In my application I have stored around 5 millions key/value data with each key containing around 800 records in json format under Redis cache. Called the Redis using stackexchange library(1.2.6) since the application does not support the latest version
You can go through the below links
https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-overview
https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-redis-samples

node.js sybase driver

I am developing an app using node.js express framework and would need to connect to sybase ASE database. I did enough search and couldn't find the sybase driver for node.js. doesn't node.js support sybase or should I use something like a generic driver?
An exhaustive list of database drivers is on the node.js wiki here:
https://github.com/joyent/node/wiki/Modules#wiki-database
But no Sybase so that leaves using an ODBC driver which, if on *nix, then you have the option of:
https://github.com/w1nk/node-odbc
Alternatively, Sybase ASE has it's own web services engine which exposes SQL and stored procedures through a SOAP API. Your best option may be to just roll your own SOAP client in node against that API, perhaps using node-soap.
As of 2015, a non-odbc implementation based on Jconnect is available. It requires Java.
You can install it with
npm install sybase
More info:
https://www.npmjs.com/package/sybase
I know it has been a while, but if you are still looking, try this:
https://www.npmjs.org/package/sqlanywhere
node.js comes with no DB support at all.
DB connectors are out of the scope of the node.js distribution. But the cummunity fills the gap here e.g. for mysql there is node-mysql.
Problem here is that you want to use a DB without a big (open source) community, so, after some googeling, there is no node.js connector.
If you want to create a connector for sybase ASE you might have a look at node-mysql to get startet. But this is nothing you do in one weekend.

Portability and flexibility considerations for developing a node.js app in Windows Azure?

I'm writing an application in Node.js for a spare-time, bootstrap project. I have a Windows background and Windows Azure with three-month free trial currently seems like the simplest way to develop, deploy and host the project.
However Windows Azure appears to get expensive after the free trial expires, and in any case I'd like the option to host on non-MS platforms, so I have a couple of questions:
I can see from the tutorial that I need some Windows-specific code to import the port number at which the app should listen - are there many more examples of Windows or Azure specific code requirements further down the line?
I'd like to take a NoSQL approach to data storage since I'm more interested in flexibility and performance than in referential integrity or structural consistency - would it be difficult to wrap Azure Tables in a data access layer that would be reasonably portable to other NoSQL databases such as MongoDB or the various cloud offerings?
Finally, the catch-all question - is there anything else I should be looking out for?
Tackling your second question: there are modules in the NPM registry that can help you here.
Firstly Microsoft have recently released the Azure SDK for node as an NPM installation module. This has a rich API that will help you interface into Azure Tables.
There are also NoSQL clients available in the NPM registry for most solutions (including MongoDB).
If you keep your data access simple, you should be able to make use of the various NoSQL clients that are available and create a nice little module layer that sits above all the ones you need to support.
You could even create a public github repository and submit your hard work into the NPM registry for other people to help you develop.
I have built an app on Windows Azure's node.js support as well and there is virtually no lock in if you stick to npm modules and open platforms.
You should also check into Microsoft's Bizspark program - you get two years of 2 reserved instances for free + storage. Its a great program.

Resources