2010-03-30 8 views
2

Je suis en train de porter un site web que j'ai créé pour que le moteur de l'application fonctionne sur un serveur dédié. Il est codé en Java et je cherche une base de données pour remplacer google datastore. Mon premier mot était MySql parce que tout le monde l'utilise, mais je n'aime pas SQL et je pense que je me sentirais plus à l'aise en utilisant OODB ou toute autre chose. Avec google datastore, je pouvais modifier mes modèles et ne pas m'inquiéter de la définition de la base de données. Je sais que MySql n'est pas possible. Et je ne veux pas manquer ça.Base de données: relationnelle/non relationnelle/orientée objet ... Que choisir?

Et si j'utilise un OODB, lequel dois-je utiliser? Qu'en est-il des performances par rapport à MySql?

Eh bien, toute idée ou conseil va vraiment m'aider puisque je ne connais rien aux bases de données.

Editer: sur les données traitées par le site, c'est un site de microblogging sur un style Twitter mais où posts a ses commentaires. À propos de la quantité de données, seul le futur nous le dira, mais je le construis comme s'il allait devenir populaire, bien sûr.

Edit 2: L'application est pas en utilisant JDO/JPA maintenant, Je viens de faire une petite couche autour de l'application moteur datastore api bas niveau.

Édition 3: Je me demande si je pourrais utiliser db4o? Est-ce un bon choix pour un site Web d'utiliser db4o?

+0

Des détails sur la taille et la forme des données à stocker ou préférez-vous laisser le champ libre à un débat NoSQL-SQL? – mjv

+0

Eh bien, quelles sont vos exigences fonctionnelles et vos cas d'utilisation? Je suis partial * contre * MySQL, donc pour un 'RDBMS traditionnel Open Source', je recommanderais Postgres ou Firebird. Bien que DB4O soit beaucoup plus génial à utiliser, les couches telles que AR/Hibernate/iBatis existent en bajillion (c'est-à-dire, un peu de mapper/interface sur SQL). D'autre part, l'apprentissage de SQL (et de la théorie relationnelle) ne fera pas de mal. –

+0

Eh bien, j'ai ajouté quelques informations sur les données que je m'attends à gérer – Damian

Répondre

1

Eh bien, après quelques recherches, je trouve que db4o est pas un bon choix pour les sites web, car il ne peut pas gérer haute concurrence (je pris contact avec l'appui et c'est ce qu'ils me dit)

Le meilleur choix semble être MongoDB, car il est très similaire à l'API de bas niveau de google: il est sans schéma, orienté document, les requêtes sont relativement puissantes, rapides et évolutives, support d'index complet.

J'ai analysé un lot d'options et cela semble être le meilleur pour ce cas.

2

Je ne connais pas les fonctionnalités de google datastore, mais je veux donner mes deux cents. Sans connaître vos habitudes d'utilisation des données actuelles et futures, c'est difficile à dire. Une chose qui est claire est la connaissance. Toutes les solutions SQL existantes (et en particulier MySQL et Postgres) sont solides et documentées pour la performance, l'utilisation, les bizarreries. Vous savez dans quoi vous vous engagez, et tout problème que vous pouvez avoir, très probablement déjà arrivé et a été résolu. Avec d'autres solutions, vous êtes plus seul.

Tenez-en compte. pas une réponse complète, juste une opinion.

0

Dans la version de votre moteur d'application, avez-vous utilisé les API JDO ou JPA? Si c'est le cas, vous pouvez continuer à utiliser ceux avec un backend SQL. Datanucleus supporte de nombreux backends différents pour leurs APIs JDO et JPA.

+0

Aucun. J'ai utilisé l'API datastore – Damian

+0

Non, je viens de faire une petite couche autour de l'API de bas niveau: http://code.google.com/appengine/docs/java/javadoc/com/google/appengine/api/datastore/package- summary.html – Damian

+0

@ecounysis il existe une API de bas niveau qui n'utilise pas JDO ou JPA. –

0

Selon Google:

Google App Engine inclut le support pour deux normes API différentes pour le datastore: Java Data Objects (JDO) et Java Persistence API (JPA). Ces interfaces sont fournies par DataNucleus Access Platform, une implémentation Open Source de plusieurs normes de persistance Java , avec un adaptateur pour la banque de données App Engine.

http://code.google.com/appengine/docs/java/gettingstarted/usingdatastore.html

Basé sur ce que je suggère regarder JDO et DataNucleus pour fournir la persistance des données. Surtout que vous voulez essentiellement la même fonctionnalité que celle fournie par App Engine.

+0

Je vais éditer la question à nouveau, je n'ai pas utilisé JDO/JPA, je viens de faire une petite couche autour de l'API de bas niveau: http://code.google.com/appengine/docs/java/javadoc/com/google /appengine/api/datastore/package-summary.html – Damian

+0

Vous devriez essayer JDO et DataNucleus pour résoudre votre problème. Je ne pense pas que vous allez trouver un clone du package com.google.appengine.api.datastore de Google. – ecounysis

+0

Je ne cherche pas de clone, je vais réécrire le code lié à la base de données, c'est pourquoi je suis à la recherche de bases de données possibles. – Damian

Questions connexes