Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
Please, suggest some lite databases to store key-value data (and maybe some other useful features). Something like NoSQL.
The main requirement that this databases must compile with my C++ program (into my binary) and no additional process on the system.
If SQLite isn't suitable, some better-known in-process key/value stores are:
Berkeley DB
Kyoto Cabinet
LevelDB
Note that for Berkeley Db and Kyoto Cabinet you'll probably need to buy a commercial license.
Did you consider SQLite? It's a library which can be statically compiled into your code. You store the database as a file in the filesystem.
https://www.sqlite.org/index.html
Others have already mentioned SQLite, which I'd also recommend since it's so easy to use. It's extremely lightweight too despite using SQL as a front end.
Another nice embedded* database is Berkeley DB. It better fits your request than SQLite (it's key/value DB) but the learning curve is much steeper. Now, I tend to be wary of open-source Oracle products (they have a bad track record managing the FLOSS projects they acquire, to say the least) but it's still worth mentioning, if you have no prejudice against Oracle it's quite a good product in itself.
(*) By the way, in order to help you find more products like that, the keywords you want to use for searching on the web are embedded database or in-process database.
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a book, tool, software library, tutorial or other off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
I was wondering what kind of front end is used for trading applications. Coming from a quant background, I was always only concerned with research and back end of the application but am at a total loss when it comes to front end/ gui. Most of my coding has been done in c++ and I am using just a config file to pass parameters.
Now it turns out due to regulatory reasons, this might not suffice. I need to have a front end which can start/ stop the strategy, change parameters and fetch order and trade history. So question boils down to this, How can I create a simple ui which can sit on another machine, communicate with the colocated machine and do all this.
Initially I thought of using web/javascript but not much is out there regarding this. Qt is another option but I suspect it will require substantial rewrite of the code and learning.
What is the preferred front end for medium to high frequency trading applications which have the core strategy running in c++?
Coming from the industry, I can tell you with certainty: Anything goes. I have worked on trading application frontends using MFC, QT, Forms, WPF. Java is quite popular too, as are homegrown abominations. One non-obvious way to communicate with the colocated machine is Citrix or Remote Desktop.
You do need to make sure that you have well defined behavior in case the client crashes, server crashes, connection between them freezes/gets lost, connection to the market gets lost, connection comes back, etc. Tell the trader how it will react in these situations, in advance. If it doesn't make sense, the trader won't use your application.
Further details depend on many variables. Are you an ISV, or is it an in-house application? Are you working in an arcade? Which markets are you connecting to? Does your hosted co-lo environment have some special rules in regards to what can run there?
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I'm searching for a tool to simulate the classic distributed computation model on a single machine to implement several algorithms in the purpose of the paper that I'm working on. Thus, performance isn't so important, it's only for scientific applications.
I want to have the possibility to specify the number of processes and the communication links between them. In other words, I want to define the network graph structure.
The computation should be asynchronous and message driven i.e. I want to send messages between connected processes and react to these messages.
Is there any library or framework for such computations? Simpler is better. Language doesn't matter so much, but I'd prefer Python or C++. I've given a look at Celery but I didn't find there the possibility to specify the connection between processes.
Very easy - python remote objects - pyro will run on a single machine or on multiple across a network.
You might also stick to python multiprocessing primitives, that allow you to create processes that communicate via queues, shared memory etc. Way easier than it seems ;)
See: http://docs.python.org/3/library/multiprocessing.html
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed last month.
Improve this question
I'm looking for a hashmap on disk (Berkeley DB would fit exactly, but for the licensing problem).
The requirements are:
FOSS w/a commercial-friendly license (can be used in commercial applications without a fee)
a C/C++ interface
Embeddable
decent speed? faster than SQLite would be ideal
cross-platform would also be nice
Any suggestions welcome.
Thanks!
There have been a couple of recent options, both of which provide a byte[] -> byte[] map, atomic batch updates, and are BSD licensed:
Leveldb from Google.
RocksDB from Facebook, which is based on a fork of Leveldb, and claims to provide higher performance on SSD backed storage.
Although your application domain and data specifications are not clear; RocksDB, which is a recent solution for embedded persistent key-value storage, seems a fit for you. Benchmarks by Facebook show that it has better performance than LevelDB for server workloads and especially with data larger than RAM capacity. Also it is open-sourced under BSD license. You can find RocksDB C++ examples and more detail from here.
How about the *dbm libraries?
dbm ndbm gdbm sdbm tdbm and friends
Plenty to choose from.
If we are strict, none of the suggested mainstream options are hash-maps. Such structures are rarely used for persistent storage because a good hash function would route to different buckets, even for similar keys. Similar keys generally imply related data that is often accessed together, so you want to avoid putting them on remote parts of the disk. Random read latency may be too high.
The most famous matching implementation would be FASTER from Microsoft.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I need some information about the Informatica ETL tool. I am a rookie with that, so could you please recommend where can I get some tutorials to get started. Can I download the tool, and if so where can I download it? What are the alternatives to Informatica?
Try Informatica Comunities. Be warned that Informatica makes it hard to find what you are looking for. I have been using it for seven-plus years -- very powerful, but very expensive and poorly constructed. Look carefully at open-source solutions, too.
As far as downloading, I vaguely remember something called a "Personal Edition" intended for evaluation, but I could not find it on their website.
Oh, I found it. $500 for a "limited version" that expires in one year. Look for "PowerCenter Developer Edition Request Form".
Informatica is one of many ETL tools. Ab Initio and SSIS are commercial competitors; there are open source alternatives.
If the vendor doesn't offer a downloadable version you're out of luck. If just you want to try out the ideas, Google for an open source alternative and try it out.
I have used Microsoft's 2005 ETL tool SSIS and Pentaho's Kettle (now called PDI), but not informatica. Of those 2, Pentaho was better than Microsoft and a free download to boot. So I would recommend adding Pentaho to any ETL evaluation shortlist.
Try Oracle Business Intelligence Application (OBIA). They supply you with a numerous BI Aplpications, including PowerCenter. Used to be free of charge fon non-productive environments
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a book, tool, software library, tutorial or other off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
I'm looking for a light-weight database library that I can compile into a C++ application.
Does any such exist?
SQLite. Not flat-file, but it is file based, can be easily embedded in apps.
For pure XML embedded database you might want to peek at Oracle Berkeley DB XML.
Maybe this very lightweight XML library can also be of help: RapidXML. It's an XML parser, not a database library, but depending on your application that might be enough (you mention a flatfile XML data storage).
You can also look at berkleyDB
From wikipedia:
Berkeley DB (BDB) is a computer
software library that provides a
high-performance embedded database,
with bindings in C, C++, Java, Perl,
Python, Ruby, Tcl, Smalltalk, and many
other programming languages. BDB
stores arbitrary key/data pairs as
byte arrays, and supports multiple
data items for a single key. BDB can
support thousands of simultaneous
threads of control or concurrent
processes manipulating databases as
large as 256 terabytes, on a wide
variety of operating systems including
most Unix-like and Windows systems,
and real-time operating systems.