Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kim/lomongo
"Pure Scala" driver for MongoDB
https://github.com/kim/lomongo
Last synced: 22 days ago
JSON representation
"Pure Scala" driver for MongoDB
- Host: GitHub
- URL: https://github.com/kim/lomongo
- Owner: kim
- License: bsd-3-clause
- Created: 2011-02-24T08:22:42.000Z (almost 14 years ago)
- Default Branch: master
- Last Pushed: 2011-04-06T19:28:14.000Z (over 13 years ago)
- Last Synced: 2024-10-18T13:31:16.231Z (2 months ago)
- Language: Scala
- Homepage:
- Size: 117 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
- License: LICENSE
Awesome Lists containing this project
README
# Lomongo
_Lomongo (ISO-639-3: lol) is a language spoken by several of the mongo peoples
in the Democratic Republic of Congo_Lomongo is a driver for MongoDB written in Scala and trying to be really
functional (not through using funny characters, though). It uses Netty for IO.## Installation and Usage
Install using `sbt`:
sbt update
sbt installFor an example of how to use the driver, see `main.scala`.
## Motivation
Existing drivers for MongoDB are quite clumsy to work with from Scala, mainly
because they try to create a Scala interface on top of the Java driver, which is
not only very OO, but also very weakly typed. Thus, those drivers make heavy
use of implicit conversions, which predictably goes horribly wrong in
non-trivial use-cases. However, trying to create a functional, strongly typed
Scala driver requires one to re-implement the protocol and serialization layers,
hence this project may or may not reach production quality (and will be maintained
actively enough to stay there). Thus, patches and contributions are highly
welcome.## Todo
* some of the administrative commands have no wrappers yet
* map/reduce is not implemented at all
* BSON encoding/decoding should be decoupled from Netty `Channel`s
* compare performance / GC characteristics of:
* Stream (including forcing / wrapping in Channel)
* Array of nested 'word' Arrays wrapped in Channel
* NIO ByteBuffer (including allocating more capacity)
* the interface follows the native API very closely -- a 'funny characters' API,
possibly exposing 'Collection'-semantics, could be nice## Contributing
Send questions, bugs or patches to [email protected]
## License
BSD-like, see LICENSE