go to post Athanassios Hatzis · Jul 24, 2018 You can definitely compile and install cache-python binding module on x86-64 machines. I have done this on Ubuntu and it produced (pythonbind3-1.0-py3.6-linux-x86_64.egg). I am not sure I understand why it cannot be installed on IRIS x86-64bit platform. If you install python binding on IRIS I will be also interested in testing my CacheORM object-relational mapper.
go to post Athanassios Hatzis · Jul 23, 2018 Thanks Evgeny, you cannot execute my jupyter notebooks on Azure cloud and I think you have to login first in order to view them. In any case my CacheORM module is dependent on intersys.pythonbind module. One has to install this first and verify that it works then start playing with my demos. I wrote guidelines about installation in Github README file.
go to post Athanassios Hatzis · Sep 12, 2017 Hi Rob, thank you for the update on your QEWD project. One of the main reasons I chose Python as the binding language for Cache in our project instead of Javascript is that in data analysis, data science area the first is already well established, extremely popular and there is big momentum on developing further a vast collection of tools and libraries that extent the language. But the second clearly wins the battle in web platform development. I am sure I will definitely re-visit your project and perhaps ask you to collaborate when I reach the stage of developing the front end and/or another client API. For our readers I must also mention that your article on a universal NoSQL engine using Globals is a must read for anyone that wants to understand the power of multi-dimensional, schema-free, hierarchically structured, sparse, dynamic arrays, i.e. Global Storage databases. And for the history it appeared right at the birth (re-birth) of NoSQL movement back in 2010 ;-)
go to post Athanassios Hatzis · Sep 12, 2017 Hi Robert, I must acknowledge that I have been inspired from your post and the comments we exchanged there ;-)
go to post Athanassios Hatzis · Sep 10, 2017 And have you noticed that what ever the model and data structure we cannot escape from the fundamental principle of managing data allocation space with references, i.e. pointer based logic, memory addressing ? Isn't this the fundamental mechanism of programming languages too ? The problem I see with all these modern nosql databases, especially graph databases is that they provide a higher level abstraction for the end developer but they hide and lock completely the access to the low level storage and retrieval mechanism including indexes. Even in key-value stores you cannot see or understand the sorting of indexes, you cannot easily reference data values.Transparency in computer science is a huge issue. Wizards and pioneers of computer hardware and software, have created multiple abstraction layers and here comes the next generation that is asked to program the machine without understanding what is going on underneath. And even if there is such a desire, the environment, the language and the tools, DO NOT help towards this direction. Intersystems cache does make the difference from many aspects. There is a built-in database with subscripted arrays and multi-dimensional keys similar to the variables used by most programming languages to access main memory.Let me repeat this, a programming language MUMPS-Cache objectscript with a built-in database. I think this is a fundamental aspect that they have been missing when others invented new programming languages. They are missing the innate common characteristic that both databases and programming languages share which is the pointer, reference based logic. So I believe it's time to return back and fix this for new generation databases AND post-modern programming languages too. What do you think ;-0
go to post Athanassios Hatzis · Sep 9, 2017 Hi Robert, thank you for sharing with the rest of us this great piece of computer history. They say life is making circles. I believe it's about time for MUMPS to make history again in database management and database modeling with Associative Semiotic Hypergraph engine build on top of Intersystems Cache globals and a powerful OOP API in Python for data analytics. Stay tuned, I am fond of old pioneers of computer technology and I do respect a lot their efforts and strangle of their time. We build powerful meaningful relationships easily ;-)
go to post Athanassios Hatzis · Aug 31, 2017 Good morning Robert, based on the piece of code you sent me for a Python TCP socket server I made these SocketReceiver, SocketSender classes for Python 3 so now it is super easy for anyone to run a simple TCP socket communication test on two Python consoles.Then I wrote this ClassMethod ClassMethod SendMessage(msg As %String = "", port As %Integer){set tcp="|TCP|"_port open tcp:("127.0.0.1":port:"PSTE"):1 else quit use tcp write msg,! write !! // close tcp Quit}The only problem here is the 'close tcp' statement that closes the listener which has been set at a Python console and I commented this out (I am sure there can be a better way). Finally I opened two python consoles and successfully tested the whole thingCase is closed, hope this will be useful for others too, thank you again for your assistance and guidance
go to post Athanassios Hatzis · Aug 30, 2017 Done, thanks for the lesson Robert ;-) I voted your comments and I verified that this method works for two Cache terminals, one listener, one sender. But I do not have a clue how this can be done in the same or different Python consoles and this way such an answer to my question will be complete.
go to post Athanassios Hatzis · Aug 30, 2017 Hi Robert, thanks for the update, let's try to sort this out in Cache Terminal then. I have added an extra write !! statement before the close tcp. Then I opened a terminal switched to SAMPLES namespace and entered the following commands set person = ##class(Samples.Person).%OpenId(1) w person.Name do person.PrintPersonTCP() set tcp="|TCP|4200" open tcp:(:4200):1 write $s($t:"OK",1:"failed"),!The result is OKBut the next line of your code for line=1:1 use tcp read text use 0 write line,?5,text,!just made the cursor blink in the next line without returning anything
go to post Athanassios Hatzis · Aug 30, 2017 Hi Robert, thanks for posting an answer, I added an extra PrintPersonTCP() at Sample.Person with your code and then I called the method from Cache Python binding package but it did not print anything on IPython console.
go to post Athanassios Hatzis · Aug 30, 2017 Hi Rubens, the only reason I need this redirection is for sending messages to the Python console for debugging, introspection purposes NOT for sending data. CachePython Query and CachePython Object packages can handle this automatically. Therefore in general I am looking for something simple, like this method Robert wrote above. Alternatively if it's too complicate, I am thinking of opening a stream and write a log there.
go to post Athanassios Hatzis · Jul 16, 2017 Sergey thank you for this series of enlightening articles on Intersystems Cache (MUMPS) globals. I have been influenced too by Rob Tweed and George James article (Globals: A Universal NoSQL Engine). And in my blog post series "Associative Data Modeling Demystified" I am covering a unified view on data models (Relational, Topic Map, RDF, Property Graph, Qlikview) from the associative perspective point of view.Finally in the last post of my series (Build Powerful, Meaningful, Cohesive Relationships Easily) R3DM/S3DM framework is introduced to the public with a demonstration of a fully functional prototype that is built in OrientDB multi-model DBMS and coded with Wolfram Language. OrientDB multi-model architecture is based on key-value store and this is very close to the globals data structure of Intersystems Cache. But I am a great fun of Intersystems Cache because of the power to manipulate easily indices and data structures and view the results in many alternative forms.You have touched many interesting topics in you articles. What is most important from my point of view are the alternative representations of tables, documents and graph data structures in a hypergraph uniform space. How you can transform easily from one structure to another, how fast you can insert new data and how fast you can filter/search. I am positive that Intersystems Cache will do enter graph database arena and self-service BI market and this is where globals will make the difference from other graph technologies especially when they are utilized in our associative, semiotic, hypergraph framework.I believe we do share a lot in common regarding to cache globals and hope we manage to exchange many ideas in the near future.