Professional Documents
Culture Documents
Report of
the Design and Development Project
Authors :
Asma Mansour Zeineb Saadi
Supervisors :
Dr. Raoudha khcherif
Miss. Hassiba Laifa
Résumé -Notre projet consiste à développer une interface graphique qui permet d’interroger
les bases de données SQL et NoSQL à travers des requêtes SQL et proposer une approche
de migration de données vers les bases NoSQL.
Nous avons utilisé des pilotes ODBC qui convertissent les requêtes SQL en commandes
susceptibles d’être interprétées par un SGBD. Nous nous interessons dans ce projet à in-
terroger les bases de données MongoDB et MySQL, et Extraire, charger et transformer des
données depuis des fichiers CSV vers MongoDB.
Mots clés: NoSQL, MongoDB, ODBC.
abstract— Our project is to develop a GUI that allows to perform SQL queries to multi-
ple databases and to migrate data from different data sources to NoSQL. We used ODBC
drivers that convert SQL queries into commands that can be interpreted by a DBMS.
Our work was essentially to seek a suitable way to get data from MongoDB and MySQL
databases using the same SQL statements, and extract, load and transform data from CSV
files into MongoDB.
Keywords: NoSQL, MongoDB, ODBC
2
Acknowledgement
The success and final outcome of this project required a lot of guidance and assistance
from many people and we are extremely privileged to have got this all along the completion
of our project. All that we have done is only due to such supervision and assistance and
we would not forget to thank them.
First and foremost, we would like to extend our deepest gratitude to our supervisors,
Raoudha Khcherif and Hassiba Laifa , who extended their complete support and
helped to make us deliver our best.
We would also like to thank all our teachers at the National School of Computer Sciences
for their constant encouragement, support and guidance which helped us in successfully
completing our project work.
Finally, special thanks to the jury members who honored us by examining and evaluating
this modest contribution.
3
Contents
Introduction 9
1 Preliminary Study 11
1.1 Academic study . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.1 Big Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.2 NoSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.1.3 MongoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2 Study Of The existing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2.1 the SOS platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2.2 Studio 3T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.2.3 Criticism and proposed Solutions . . . . . . . . . . . . . . . . . . . 17
1.3 State of the art technologies . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.1 ODBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.2 ODBC driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.4 Proposed solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3 Design 25
3.1 Global Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1.1 Physical Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1.2 Logical Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.1.3 Combined component / deployment diagram . . . . . . . . . . . . . 27
3.2 Detailed design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4
CONTENTS
4 Achievement 34
4.1 Developing Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.1.1 Hardware Environment . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.1.2 Software Environment . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.1.3 Technological choices . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.2 Achieved Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.2.1 The authentication interface . . . . . . . . . . . . . . . . . . . . . 37
4.2.2 The query interface . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.2.3 The Data interface . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.2.4 Load CSV file interface . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
CONTENTS 5
List of Figures
6
List of Tables
7
Acronym
MVVM : Model-View-ViewModel
CSV : Comma Separated Value
NoSQL : Not only SQL
ORM : Object-Relational Mapping
DB : Database
GUI : Graphical User Interface
UML : Unified Modeling Language
Pyro4 : Python Remote Objects
ODBC : Open Database Connectivity
DSN : Data Source Name
DBMS : Database Management System
RDBMS : Relational Database Management System
JSON : JavaScript Object Notation
DBMS : Data Base Management System
8
Introduction
For the past thirty years, the Relational Database has been the default choice for most
traditional data-intensive storage and retrieval applications [Cha10], with Structured Query
Language (SQL) as the standard language designed to perform the basic data operations.
However,with the emergence of big data, which consist of massive volume and variety in
both type and structure of data, the strictly structured schema-based relational database
lose efficiency. Furthermore,in regards of the scalability , relational databases are vertically
scalable which means that they need to add more resources such as RAM, SSD or CPU
to be able to increase the load on a single server,and which was very difficult and costly
task.[Lak]
The NoSQL (not-only SQL) databases appear with a set of new data management fea-
tures, as alternatives to overcome the limitations of the current relational databases. In
fact, NoSQL databases are horizontally scalable, which means that they can handle massive
amounts of data by adding more servers sharing the workload, also it is a perfect fit when
it comes to big data as its schema-less architecture enables it to adapt well to the rapidly
increasing and changing structured, semi -structured and unstructured data.[Gre18]
However, as most developers used to write SQL statements to get data, dealing with
NoSQL databases that don’t have a declarative query language wasn’t that easy.
In this context, our project consists in developing a graphical user interface (GUI), that
allows users to query relational and non-relational databases with the same SQL state-
ments, extract, transform and load data from any data sources into NoSQL databases, and
display the results of the queries in tables as if we were dealing with relational databases.
And since this whole project is very large compared to the demands of the development
and design project in terms of time and quantity we had the honor to take care of a part
which is: using SQL to query MongoDB and MySQL, and extract, transform and load
data from CSV files into MongoDB (Data warehouse).
In the first part, we will present the project context by giving a scope, a summary of the
problem, and, finally, the result that we expect to have. In the second we are going to go
deeper and explain what does already exist what is their gaps and weakness then we will
9
LIST OF TABLES
explain the major concepts that help us to build our project to be able to understand what
we are going to present in the upcoming section. the third section is dedicated to showing
the specification and requirement analysis. And in the fourth one, we will give diagrams
that give an overview of each part realized.
The last section presents what we made during the previous four months we gave screen-
shots of the codes, statistics and the web sits view to illustrate what we achieved.
Finally, we conclude our work by giving evaluations and suggesting prospects for the
application.
LIST OF TABLES 10
Chapter 1
Preliminary Study
This chapter contains an academic study that introduces the most significant concepts
discussed in our project. We then study some of the existing solutions and critique their
effectiveness and their limitations. Next, we will specify our proposed solution and our
work methodology.
In August, 2013 the definition was further enhanced to include, "veracity, variability,
visualization, and value" ,as the figure 1.1 shows, which gave a newer vision to it.[Rij13]
11
1.1. ACADEMIC STUDY
Big Data mainly involve six aspects as per the mentioned definition :
• Volume : defines the quantity of Big Data, which ranges from terabytes and petabytes,
to even Exabytes.
• Variety : defines data types of Big Data, which includes structured and unstructured
data such as audio, video, text, posts, log files and many more.
• Velocity : is the speed at which the data is created, stored, analysed and visualised.
• Variability : Data can have the same form but different semantics.
• Visualization : is the manner how to make Data easy to understand and read.
1.1.2 NoSQL
Definition
Since the 1970s, the relational database has been the essential reference for managing the
data of an information system. However, faced with the 3V (Volume, Velocity, Variety),
relational can hardly fight against this wave of data. The NoSQL has naturally imposed
itself in this context by proposing a new way to manage data, without relying on the
relational paradigm, hence the "Not Only SQL". This approach proposes to relax some
heavy constraints of the relational to promote distribution (data structure, query language
or consistency).[BT19]
NoSQL DB types
The storage and handling requirements within a database are variable and depend mainly
on the application you wish to integrate. For this, different families of NoSQL databases
exist as the figure 1.2 represents :
• Document DB : store data in documents similar to JSON objects. Each one of them
contains pairs of fields and values.
• Key-value DB : each unique identifier is stored as a key with its associated value that
can be any sort of byte array, data structure, or even binary large object.
• Wide-column DB : stores data in tables, rows, and dynamic columns.Each row is not
required to have the same attributes type.
• Graph DB : stores data in nodes and edges. Nodes store information about objects
while edges store information about the relationships between these nodes.
ACID vs BASE
When we say SQL, we mean by it the ACID properties for transactions:
• Isolation : Changes to a transaction are only visible or modifiable once it has been
entirely finished.
• Durability : Once the transaction has been released, the status of the DB is perma-
nent.[Sas18]
However, these properties are not applicable in a distributed context such as NoSQL.As
a result, BASE properties have been proposed to characterize NoSQL DBs :
• Basically Available : the DB appears to work most of the time.
1.1.3 MongoDB
Definition
A record in MongoDB is a document, which is a data structure composed of field and
value pairs. MongoDB documents are similar to JSON objects. The values of fields may
include other documents, arrays, and arrays of documents [ope].
The figure 1.1 shows the difference between the SQL and MongoDB terms :
MongoDB features
As a NoSQL tool,mongoDB becomes one of the most popular databases because of its
key features, including the query language, which makes it the strong point.
• High Performance
• High Availability
• Replication
• Duplication of data
CAP theorem
In 2000, Eric A. Brewer[Bre00] formalized a particularly interesting theorem called the
CAP Theorem which is based on 3 fundamental properties to characterize databases (re-
lational, NoSQL and others) :
• Consistency : A data has only one visible state regardless of the number of replicas.
Theorem (CAP theorem). In any database, you can respect at most 2 properties among
consistency, availability and distribution.
Thanks to this CAP Theorem, it is then possible to classify all the databases by placing
them on the "CAP triangle"1.3.
The approach for SOS, we describe here, uses the meta-layer as the principal means to
support the heterogeneity of different data models.The pivot model, the meta-layer, is used
to point out a common interface.The idea of a pivot model finds its basis in the MIDST
and MIDST-RT tools.[PR]
The figure 1.4 below represents the logical architecture of the SOS platform:
1.2.2 Studio 3T
Studio 3T (formerly MongoChef) is a GUI and integrated development environment
(IDE) for developing and managing data on the MongoDB NoSQL platform. It is developed
by 3T Software Labs (acquired by Redgate Software in 2016).
The queries are constructed by drag-and-dropping fields and operators into a visual
query builder; using automated code completion with an aggregation pipeline builder;
map reduce; or writing standard SQL queries, with auto-translation into mongoshell JSON
script.
• High performance
This module is essential in any project due to the importance of response time. One
of the most obvious issues in the SOS platform is that it has a low performance as the
article[PR]said that the homogenization presents performance tradeoffs that need to
be well and carefully studied.
We observe clearly that the low performance of the SOS platform is due to the compli-
cated approach which is based on Model- independent schema translation.SO we need to
translate every schema of every DB even that we didn’t need it that maybe takes more
time to respond.
On the other hand, the studio 3T doesn’t afford a connection with other DBs except for
MongoDB and also it can not do the update SQL queries.
Here, we intervene with our project to offer a solution providing a new approach that
does not require a pivotal model with no translation from the base to this model. And for
these reasons, the proposed approach promises more significant performances.
1.3.1 ODBC
Open Database Connectivity (ODBC) is Microsoft’s basic application programming in-
terface (API) for accessing database management systems (DBMS) using SQL as a data
access basic. ODBC provides full interoperability, making it possible for a single applica-
tion to access multiple DBMS, and Users can then add ODBC database drivers to connect
the application to their DBMS option. [Mic]
Our first step was installing the ODBC driver and configurating the DSN then we inte-
grate the URL connection with the appropriate DSN pieces of information into the code
to bind both of the GUI and the DBMS.
This figure indicates an ODBC application which has two different databases available.
Using the ODBC API, an ODBC program makes a call to the Driver Manager. The Driver
Manager may be either the Microsoft Driver Manager or the unixODBC Driver Manager.
The Driver Manager also makes a call to the ODBC Driver when using the ODBC API.
Using a network communication connection the ODBC Driver accesses the database.
1.5 Conclusion
In this chapter, we gave a brief study about the most significant terms(Big Data, NoSQL,
MongoDB) by presenting their definitions and some of their features. After that, we studied
the existing solutions and we highlighted our proposed solution. In the next chapter, we
explain the different functionalities that our GUI offers and we present the main possible
scenarios.
This chapter will set out a detailed requirements review and specification. By identifying
the principal actors in direct contact with the program, it will describe the key functionali-
ties in the first section. Then we’ll identify the functional and non-functional requirements.
Finally, the biggest part representing the heart of this chapter will describe the main use
case using UML accompanying diagrams.
2.1.1 Actors
Our application has a single user. The user connects first then he/she can query or add
a CSV file into the MongoDB.
• Authentificate
20
2.2. REQUIREMENTS SPECIFICATION
• Portability : the GUI can work on any operating system(Windows, Linux, ...).
• Robust security : all passwords and queries are encrypted in the SQLite DB.
The figure 2.1 represents the use case diagram of our GUI.
First of all, the user has to fill the connection form and submit it. Then, if the authen-
tification was validated, he/she can either add a CSV file into the MongoDB or query the
DBs. In this case, if we suppose that the query is select, here the GUI offers to the user
the opportunity to see data in the form of Data Frame or Histogram or either statistics.
In the figure 2.2, we present the interaction between the user, the system(GUI), SQL
DB, and MongoDB.
The first user step is the click on the connection button after filling the user name and
the password forms. Then, the GUI sends a connection request for both SQL DB and
MongoDB. The response will be either true or an error. If the connection was established
correctly, a home view will appear for the user providing him the opportunity to query or
add a CSV file and the user information will store in the interface DB. But, if a connection
error comes as a result to the GUI, an error message will be shown to the user.
2.3 Conclusion
During this chapter, we defined and evaluated the functional and non-functional re-
quirements that our project would follow, and discussed our system’s key use cases and
scenarios. In the next chapter, by presenting their concept, we go one step further in the
development of our GUI.
Design
The design phase is one of the most important axes for any project’s development and
execution, as it is the guideline for the implementation process. Taking that into account,
we devote this chapter to detailing the patterns and designs that are to be followed in the
next step of the application development. We must first decide the architecture in physical
and logical terms. After that, we’ll detail and justify the design choices using the necessary
UML diagrams.
This type of multi-tiered model is divided into three layers as the figure 3.1 shows :
• The Presentation tier : this is the layer at which the user views of the GUI are
mounted. It is accessible from the user’s computer where the Interface is installed.
This layer is considered as the highest layer and it is well-linked with the application
layer that is located just below.
25
3.1. GLOBAL DESIGN
• The Database tier : this is the third layer comprising the network of three levels:
it corresponds to the server of the database. On this third tiers, a DBMS (Database
Management System) is installed, in our case Microsoft SQL Server and Mongo
Server, and these servers are requested by the server application to get a certain
amount of data.
The choice of MVVM is due to the issues coming up from the strong coupling between
the view and the model in the MVC architecture.
In fact, in the MVVM architecture, There is no more direct association between the two
layers the view and the model and here it comes the principal role for the ViewModel layer
which is the middleware associating the two other layers.
The Data flow between the ViewModel and the View is organized by a binder. This binder
is made with the Observer pattern of MVC which is reintroduced but at the level of the
attributes.
CHAPTER 3. DESIGN 26
3.2. DETAILED DESIGN
CHAPTER 3. DESIGN 27
3.2. DETAILED DESIGN
The figure 3.4 represents the class diagram combined with the three layers of the MVVM
architecture.
CHAPTER 3. DESIGN 28
3.2. DETAILED DESIGN
CHAPTER 3. DESIGN 29
3.2. DETAILED DESIGN
CHAPTER 3. DESIGN 30
3.2. DETAILED DESIGN
The first step of the user, as the figure 3.5 shows, is when he clicks on the connection
button after filling the connection form. That event issues the creation of a new object,
the connection object, which is the middleware between the GUI and the controller Data-
Management.
If the couple username and password exist in the SQLite DB, the connection is applied
using the Driver. If the UserName exists in the SQLite DB, but the password is wrong, an
error message will be displayed on the GUI.
The other case is when the name doesn’t exist in the interface DB. So, here It’s the first
time when the user connects by this interface or a modification was occured on the old
password and the user was deleted from the SQLite DB. Then, a request for connection
will be sent by the connection object to the driver.
If the response is True, the inputs written by the user are correct. Else, an error message
will be displayed on the GUI.
CHAPTER 3. DESIGN 31
3.2. DETAILED DESIGN
The figure 3.6 describes the manner of the regular update in the SQLite DB. The update
will be in a continuous cycle with the aid of a while True instruction. Every single Data
in the User or Query table will be sent as a query to the MongoDB and SQL DB.
CHAPTER 3. DESIGN 32
3.3. CONCLUSION
3.3 Conclusion
Through this chapter, we presented the general architecture of our GUI and we explained
our choices. For the detailed design, we exhibited the class diagram as well as the sequence
diagrams. In the next chapter, we focus on the implementation phase and we expose the
technologies employed during the achievement of the project.
CHAPTER 3. DESIGN 33
Chapter 4
Achievement
Laptop HP DELL
Processor 1.8 GHZ 2.9 GHZ
RAM 8 GB 8 GB
Hard Drive 1 TB 1 TB
34
4.1. DEVELOPING ENVIRONMENT
Jupyter Notebook
The Jupyter Notebook is an open-source web application that allows you to create and
share documents that contain live code, equations, visualizations and narrative text[Jup].
This application was chosen in order to facilitate the test of algorithms before integrating
them into our project.
Spyder
Spyder is a powerful scientific environment written in Python, for Python, and designed
by and for scientists, engineers, and data analysts. It is an IDE that can offer the possibility
to merge the editing, analyzing, debugging, and profiling functionality of a comprehensive
development tool with the data exploration.
Qt Designer
Qt Designer is the Qt framework used to design and build graphical user interfaces
(GUIs) with Qt Widgets. At compile time they will be automatically converted back to
python and thus usable as normal classes.
Programming language
Python is an interpreted and high-level programming language. Object-oriented pro-
gramming and structured programming are fully supported, and many of its features sup-
port functional programming and aspect-oriented programming. Python was our choice to
implement our application because of :
• Productivity
Python provides advanced support for image and voice data because of its built-in
data features of supporting data processing for unstructured and unconventional data
which is a common need in big data when analyzing social media data. It has also
all the capabilities to develop complex multi-protocol network applications.
• Powerful Scientific Packages
Python library packages, including ODBC and Pandas, fulfill analytical and Data
processing needs.
CHAPTER 4. ACHIEVEMENT 35
4.1. DEVELOPING ENVIRONMENT
• Scalability
The scalability is a process, network , software, or organisation’s ability to grow
and manage increased demand. Unlike other languages of data science, such as
R, MatLab, or Stata, Python is much quicker. This makes python is the most
appropriate when we talk about NoSQL [Ver18].
Libraries
• Pandas
Pandas is a library that helps in analyzing data. Besides, it provides the required data
structure and operations on time series and numerical tables for data manipulation.
We use it to visualize data in many forms, such as tables or statistical diagrams or
even histograms.
• SQLAlchemy
SQLAlchemy is the Python SQL toolkit and Object Relational Mapper ORM which
gives the full power and accessibility of SQL to the application developers.[SQL]
It was the mapper between our SQLite DB and the models: the User and the Query.
• Pyodbc
pyodbc is an open-source Python module, which simplifies access to ODBC databases.
In our GUI, this module makes the access to ODBC of both SQL DB and MongoDB
easier using the drivers appropriate for each DB.
• CSV
The CSV module implements Classes in CSV format for reading and writing tabular
data. This library provides the possibility to extract data from any CSV file to insert
it into MongoDB.
• JSON
Python comes with a built-in package to encode and decode JSON data, called json.
We use this module to transform the data in the CSV file to the JSON format.
• Cryptography
Cryptography is a package that provides Python developers with cryptographic recipes
and primitives.We used it to crypt and decrypt the data in the SQLite DB.
CHAPTER 4. ACHIEVEMENT 36
4.2. ACHIEVED WORK
The figure 4.2 shows the state of the users table after every connection operation. The
name and the password are crypted using the Python module Cryptography to provide
more security to our application.
CHAPTER 4. ACHIEVEMENT 37
4.2. ACHIEVED WORK
CHAPTER 4. ACHIEVEMENT 38
4.2. ACHIEVED WORK
Update queries
through the GUI we can use UPDATE statements such as INSERT, UPDATE, DELETE,
to modify data from current MongoDB collections. the figure 4.5 shows the changes that
have been made to the employees collection after executing Insert statement.
We can also use the UPDATE query to modify data values. The figure 4.6 below shows
the effect of the Update query statement on the employees collection.
CHAPTER 4. ACHIEVEMENT 39
4.2. ACHIEVED WORK
We can even remove data from a collection or delete the entire collection. The figures
4.7 and 4.8 display respectively the employees collection after removing the selected data
and the collections in the New york’s MongoDB database, after deleting a collection.
CHAPTER 4. ACHIEVEMENT 40
4.2. ACHIEVED WORK
CHAPTER 4. ACHIEVEMENT 41
4.2. ACHIEVED WORK
Figure 4.8: Tthe collections view in the New York’s MongoDB database
DataFrame resulting from the above query, the data statistics and histogram chart .
CHAPTER 4. ACHIEVEMENT 42
4.2. ACHIEVED WORK
CHAPTER 4. ACHIEVEMENT 43
4.2. ACHIEVED WORK
Figure 4.12: the DataFrame resulting from the INNER JOIN clause
Figure 4.13: the DataFrame resulting from the FULL JOIN clause
CHAPTER 4. ACHIEVEMENT 44
4.2. ACHIEVED WORK
Figure 4.15: CSV file rows that were added to the collection.
CHAPTER 4. ACHIEVEMENT 45
4.3. CONCLUSION
The figures 4.16 and 4.17 below show the changes made after adding the CSV file in the
employees collection.
4.3 Conclusion
During this chapter, we presented the technologies chosen to implement our project and
we gave the reason for that choice. Then, we finished by showing the main interfaces of
our application and the related tables of SQLite DB.
CHAPTER 4. ACHIEVEMENT 46
Evaluation and Recommendation
Evaluation
We were assigned the responsibility through this project to develop a graphical user
interface GUI to allow users to query multiple databases SQL and NoSQL despite their
structure and types within the same SQL query language.
Considering the time allocated to this project, we took particular interest in querying
MongoDB and MySQL database , displaying the result of the SELECT SQL queries in
the form of rows and columns and edit MongoDB databases whether by using the update
queries or by loading CSV files.
Firstly, the section of the preliminary study presented initial research in various theoret-
ical concepts, starting with introducing the most significant terms used in our project,
finishing with using those techniques to drift from the idea of a simple GUI dedicated to
querying only relational databases with SQL statements to a more sophisticated one ca-
pable of communicating simultaneously with non-relational and relational databases using
the same language.
Secondly, we presented a static and dynamic overview of the different aspects of the appli-
cation.
Then, we experimented with multiple SQL queries on our Interface to determine how Mon-
goDB and MySQL will respond face-to-face with the same standardized query language.
Finally, We exhibited the fruit of our researches with a GUI capable of querying both
MongoDB and MySQL databases and display data in its standard form (DataFrames).
Perspective
Thanks to the evolutive character of the Big Data domain, our GUI can support other
functionalities. In fact, the main project is to develop a GUI capable to query not just
MongoDB and MySQL DBs but any relational and non-relational DBs, thus more experi-
47
4.3. CONCLUSION
Furthermore, we can work to extract and transform structured and unstructured data from
different data sources and load it into a common data repository (Data Warehouse), thus
requires a complex ETL process.
Once completed, the project can be extended to suit the Business Intelligence Requirements
and other application fields.
CHAPTER 4. ACHIEVEMENT 48
Bibliography
[BL12] Mark Beyer and Douglas Laney. “The Importance of Big Data”. In: (2012).
[Bre00] Dr. Eric A. Brewer. “Towards Robust Towards Robust Distributed Systems”.
In: (2000).
[PR] Francesca Bugiotti Paolo Atzeni and Luca Rossi. “Uniform access to non-relational
database systems: the SOS platform”. In: Dipartimento di informatica e au-
tomazione Universit‘a Roma Tre ().
[SKM15] Soumya Shukla, Vaishnavi Kukade, and Sofiya Mujawar. “Big Data: Concept,
Handling and Challenges: An Overview”. In: International Journal of Computer
Applications (0975 – 8887) (Mar. 2015), p. 114.
49
Netography
50
NETOGRAPHY
[Ver18] Amit Verma. 5 Reasons Why You Should Choose Python for Big Data. https://
www.whizlabs.com/blog/python-and-big-data/?fbclid=IwAR16pi7uuSzcnJ3JC-
Ly5cjSTE1qpQTlBaROGijpTkX45BpYBGeD1XzSQls. 2018.
[Wik17] Wikimedia. 3-tier client/server model architecture. https://commons.wikimedia.
org/wiki/File:Client-Server_3-tier_architecture_-_en.png. 2017.
NETOGRAPHY 51