https://github.com/wisskirchenj/jsondb
Json-Database Server that clients can connect to via sockets
https://github.com/wisskirchenj/jsondb
client-server gson java18 jcommander jedis multithreading redis socket-programming
Last synced: 4 months ago
JSON representation
Json-Database Server that clients can connect to via sockets
- Host: GitHub
- URL: https://github.com/wisskirchenj/jsondb
- Owner: wisskirchenj
- Created: 2022-09-24T21:49:33.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2024-01-05T18:03:26.000Z (almost 2 years ago)
- Last Synced: 2025-02-24T04:42:14.584Z (8 months ago)
- Topics: client-server, gson, java18, jcommander, jedis, multithreading, redis, socket-programming
- Language: Java
- Homepage:
- Size: 141 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.MD
Awesome Lists containing this project
README
# IDEA EDU Course ...
Implemented in the Java Developer Track of hyperskill.org's JetBrain Academy.
Purpose of doing this project, is to further practise core java topics as multi-threading, a socket,
server-socket server-client application, the Gson and Jcommander libraries and some more POJO java and
collect some experience with REDIS NoSQL-DB and it's Java connector Jedis.This is a graduate project of the Java Developer Track.
## Technology / External Libraries
- POJO Java 18,
- Socket & ServerSocket - connection between server and client(s)
- multi-threading with Java Executor-Service (Java-core .util.concurrent)
- Apache GSON library
- JCommander library to parse CL-arguments
- Redis / Jedis -> used in Stage 4 - also CI-Container as GitHub-actions service
- Apache Log4j SLF4J API binding to Log4j 2 logging and
- Junit 5 with
- Mockito (mockito-inline) testing.## Repository Contents
The sources of main project tasks (6 stages) and unit, mockito testing.
## Program description
A server-client(s) application that simulates the Json storage and retrieval in a server-side
Json-database. The DB-realization is done via self-made Json-file File-Database (in later stages) and the
Client-Server connection is "low-level" build via Socket to ServerSocket connections. Clients are processed
multithreaded using ExecutorService.Have fun!
## Project completion
Project was completed on 30.10.22.
## Progress
24.09.22 Project started - git repo and gradle setup.
24.09.22 Stage 1 completed - a cell database simulated by y string array. Some CL commands to set, get and delete in
the 'database'.14.10.22 Stage 2 completed - a client and server application are implemented, which communicate via sockets. A very
basic connection is established in this stage - requesting and receiving a random record #.16.10.22 Stage 3 completed - server applications now handles the cell database and works on socket connection
for clients in a loop until exit command set. com.beust.jcommander used to parse CL-parameter options21.10.22 Stage 4 completed - socket communication now in Json Format (Database Command and Response). Use of Gson-library.
Database is now a Redis KeyStore which is connected from the Java Server with the Jedis-library.24.10.22 Stage 5 completed - multithreaded request handling with executor service.
Database file-based hand-made using ReentrantReadWriteLock.24.10.22 Stage 6 completed - multithreaded and now with arbitrary Json-values to store - and set/get/delete can
accept hierarchical keychain to set/look/delete nested in Json.