Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Design: Choose DB engine to be used in the project #5

Closed
OrAbramovich opened this issue Oct 30, 2017 · 8 comments
Closed

Design: Choose DB engine to be used in the project #5

OrAbramovich opened this issue Oct 30, 2017 · 8 comments

Comments

@OrAbramovich
Copy link
Collaborator

OrAbramovich commented Oct 30, 2017

The project implementation must include a DB to store its data e.g: registered users details, apartments details, etc...

There are various of aspects should be considered:

@idanyadgar
Copy link
Contributor

I believe that using an SQL DB is a great solution. And we can go with MySQL.

  • License: GPL license, which means we can use it for free.
  • Storing geo-location data: We can store geo locations (longitude + latitude) easily, and perform a distance-based search according to it.
  • Performance: this DB has pretty good performance when writing queries properly and using the right methods (e.g stored procedures).
  • Dependencies & minimal system requirements: this DB is very common and is supported by many frameworks and libraries.
  • Integration with the selected programming language: same as above.

Our data matches very well the relational model and using an SQL database is the right choice in my opinion.

@OrAbramovich OrAbramovich changed the title Choose DB engine to be used in the project Design: Choose DB engine to be used in the project Oct 31, 2017
@OrAbramovich
Copy link
Collaborator Author

I also vote for the MySQL - suits our needs and it has a cross-platform support.
The engine is commonly used so there are stable libraries to work with it and there is a community.
In addition, it has some important features like a built-in replication engine (for disaster recovery), built-in data encryption/decryption, etc...

@AdiOmari
Copy link

MySQL is never a bad choice and it is the easiest to agree on. However, there are newer and more scalable database types that worth looking at like mongodb or elasticsearch .

@alonttal
Copy link
Collaborator

mongodb is NoSQL Document DB,
not only it is easier to use, but also (and more importantly) declartive,
which means it will be easier to read and maintain.

@OrAbramovich
Copy link
Collaborator Author

OrAbramovich commented Oct 31, 2017

Option B:
So it seems that MongoDB is a relevant candidate as well (see general info). However, we have to read about it in order to get familiar with the product and to determine whether it's a good candidate so I created an issue "Research: Compare DB alternatives: MongoDB & ElasticSearch" (assigned to @alonttal and to @OrAbramovich, see #13 ) for learning it.

Are you familiar with MongoDB/ElasticSearch? @alonttal @idanyadgar @chananbental @omrihuller @Danielohayon )

General information:

MongoDB is NoSQL DB engine (it uses JSON like files)
License: MongoDB is available at no cost under the GNU Affero General Public License.
Storing geo-location data: has native support: MongoDB has built in spacial functions, so finding relevant data from specific locations is fast and accurate. In MongoDB, we can store geospatial data as GeoJSON objects or as legacy coordinate pairs (https://docs.mongodb.com/manual/geospatial-queries/).
Performance: this DB has better performance than RDBMS DBs because by default prefers high insert rate over transaction safety.
Other features: supports replication as well.
Dependencies & minimal system requirements: cross-platform.

@chananbental
Copy link
Collaborator

i am familiar with MongoDB, but not too well

@OrAbramovich
Copy link
Collaborator Author

Following the discussion we had on the weekly meeting (06.11.2017) and the research about MongoDB and ElasticSearch we have to decide between two candidates: MongoDB and MySQL (see #21 )

@alonttal
Copy link
Collaborator

alonttal commented Nov 6, 2017

@OrAbramovich and @chananbental are assigned to the task.
new issue is opened: #21 .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants