My part of this project is to write application, which would gather images of caught thieft, notify about thieft and present the image on my cell phone.
First thing first- as everybody knows the most important thing in every IT project is database;) – the rest is only „nice-to-have” addition: like well designed GUI on the phone, well designed and written Java app and working, efficient algorithm for catching the movement.
I have already tested SQLLite for Android and as it is good DB for the beginnig, but in fact it is not a real DB – data is kept in uncrypted files, there’s no real concurrency implemented and it is quite slow. This time I would like to use something astonishing! I will have lots of data – my camera will catch images every 5s. My choice in regards to RDBMS was obvious in this case. Two years ago I was on Actian conference in London and could see tremendously good DB for Android: ActianZen. Here is how the creator describes it :
„It made perfect sense in the past but dealing with ETL, your own data security, portability, indexing, time-stamping, and a host of other features built-in to modern edge data management solutions no longer has to be a trade-off against some complex database that doesn’t fit your edge use case. With Zen you get the simplicity of file system APIs with the robust functionality of a real-time database.”
https://www.actian.com/data-management/zen-embedded-database/
I have already installed it on my Windows 10 laptop – after some disturbances (for which I got superfast support from Actian – love that!!!) and reinstallation, I must admit it works quite well – and my laptop is not the youngest (5 years and only 4GB of RAM).
I have already tested connecting to this DB from python via ODBC and it worked without problems (even kid could do it;)). Here is exemplary program:
import pyodbc
conn_str = "Driver={Pervasive ODBC Engine Interface};Server=Localhost;DBQ=MainDB"
db = pyodbc.connect(conn_str)
c = db.cursor()
c.execute("select * from images")
row=c.fetchone()
if row:
print (row.id)
else:
print("no rows avialable")
db.close()
Just now my ER diagram looks like that:
It will be further developed – but rather in weekends…;)