我需要帮助为我的应用程序选择数据库。
我的网络应用程序基本上由一个主表组成。我们称之为“用户”表。 它将拥有用户信息,如姓名,身份证,密码,地址,电话等。 将有5个其他相关表格,我将保存每个用户的信息。 例如。阅读书籍表,听到的歌曲表,吃过的食物等。
总的来说,我不希望我的数据超过1,000个用户。 所以,我有很小的数据要求。 一般来说我会使用mysql,但我感觉有点冒险。 我想在块上尝试一些新的解决方案。 我的要求是: 1.纯粹的表现 2.良好的文档,易用性
因为我的db大小不应该超过几百兆,所以我宁愿在内存中使用整个表空间来提高性能。一些新的NoSQL DB怎么样。
任何建议?我主要在oracle和MySQl上工作,对那里所有新的令人兴奋的东西都不太了解。
答案 0 :(得分:4)
如果您的数据库要求很小,我建议使用sqlite。
来自sqlite网站:
SQLite是一个紧凑的库。启用所有功能后,库 大小可以小于350KiB,具体取决于目标平台和 编译器优化设置。 (64位代码更大。还有一些 编译器优化,例如积极的函数内联和循环 展开会导致目标代码变大。)如果是可选的 省略了功能,可以减少SQLite库的大小 低于200KiB。 SQLite也可以在最小的堆栈空间中运行 (4KiB)和非常小的堆(100KiB),使SQLite成为一个受欢迎的数据库 引擎选择内存受限的小工具,如手机,PDA, 和MP3播放器。在内存使用和速度之间存在权衡。 SQLite通常运行得越快,你给它的内存就越多。 尽管如此,即使在低内存中,性能通常也相当不错 的环境中。
答案 1 :(得分:2)
面向对象的dbs可以像db4o或versant一样使用。
答案 2 :(得分:1)
Neo4j(对于Java)是一个非常棒的工具。它在技术上是一个图形数据库,但是通过数据模型的声音,我认为它非常适合你。从我所看到的它表现得非常好,它的文档非常好,如果你使用Java那么它就像第二天性。你基本上把它指向一个目录,并在那里设立商店。
如果你喜欢冒险并碰巧使用Java,我建议你试一试。
答案 3 :(得分:1)
我认为redis正是你想要的!
昨天我第一次下载并安装了它。它完全在内存中运行,满足您的性能要求。 (它只会将数据写入磁盘,以用于电源故障等情况,例如备份,但这并不会减慢对它的写入速度。)
对于linux等,下载页面上有tar.gz。
对于Windows,您可以下载Dusan的本机端口:http://redis.io/download - 它已预编译,并且还有客户端控制台可供试用。
文档非常好,例如,这是数据类型的页面:http://redis.io/topics/data-types,您还可以在其中找到所有其他相关信息作为快速浏览参考。
还有一个很好的在线教程可以快速入门:http://try.redis-db.com/这实际上很有趣。
我喜欢像“增量”这样的原子操作以及带有push和pop的列表结构。
还有一种哈希类型。
对于python,有redis-py:https://github.com/andymccurdy/redis-py
我自己是一个python编码器我认为redis提供的数据结构与python数据类型非常匹配。