Are there any databases that support protocol buffers? [closed] - database

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 2 years ago.
Improve this question
Are there any databases, in either the SQL or NoSQL worlds, that support protocol buffers? (Support could mean various things, but hopefully would include being able to index on fields in protocol buffers.)

ProfaneDB: http://profanedb.gitlab.io
"ProfaneDB is a gRPC interface between Protocol Buffers and RocksDB"
P.S:
Though the question was asked 10 years ago I still find it very relevant, specially with the ascension of gRPC. Hope that can be of help.

I am not aware of any (not that they don't exist, I just don't know about them), but perhaps it is worth discussing an alternate strategy and the pros and cons.
Typically you would want to store a serialized version of your protocol buffer, indexed by some particular key (a unique identifier, perhaps). You could then build secondary indexes for other interesting fields that point to that unique identifier. The idea is that you would want explicit indexes like this to scale beyond what a system that provides arbitrary indexes. This obviously opens up a world of new problems (such as stale arbitrary indexes).

Here is a project I found: https://github.com/google/mysql-protobuf
It's sql that speaks protobuf, looks promising but last commit was in mid March 2016.

ClickHouse lately added support for protobuf messages.

Cloud Spanner would provide native support for protobufs.
https://cloud.google.com/spanner/

Related

Where can I find a list of ANSI SQL keywords/functions? [closed]

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 2 years ago.
Improve this question
I am developing an app using SQL Server, but I've been asked to keep it compatible with the ANSI standard as much as possible in case we need to change to a different database in the future.
Is there a list of functions supported by pure ANSI SQL somewhere? I would have thought there would be, but I haven't been able to find one after 20 minutes on Google.
but I've been asked to keep it compatible with the ANSI standard as much as possible in case we need to change to a different database in the future.
Note that ANSI compatibility is not sufficient to guarantee portability, as SQL Server's ANSI-compatible syntax may not be implemented by some other platform.
Best practice to maximize portability is to minimize database-side stored procedures and functions, as these always are different, and (as you are doing) prefer the ANSI flavor of doing something to a proprietary one. EG use CASE not ISNULL, etc.
At the end of the day you should plan to have an abstraction layer in your application that would allow you to change databases or support multiple. If you use an Object-Relational Mapping (ORM) in your app (like Entity Framework, Hibernate, etc), that can be used to minimize and manage the application code dependency on a particular RDBMS.

looking for a distributed key value database for persistence [closed]

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 8 years ago.
Improve this question
I'm looking for an efficient key-value distributed persistent database.
I've look into Redis, but it only support hashes with up to $2^{32}$ keys, which is not enough for my application
I've look into Memcached, but it is not designed for long-term persistence, it is designed for keys-value pairs to expire after a while
I've look into BerkeleyDB, but does not support a client-server paradigm, it is basically a in-app storage engine
I've look into HyperTable, but is not really row-oriented, you cannot edit existing rows unless you want to hack the timestamps, and after a key + timestamp is deleted, it cannot be reinserted. Also, the only supported value type are strings, if you want to store floats or complex objects you need to serialize into a string and then deserialize
I've look into MongoDB, which is very flexible, but it has suffered from very important performance and scalability issues that haven't been addressed in the last two years. They are summarized in this blog post.
I'm going to look next into Cassandra and Riak, and as you see i'm quickly running out of real options
What other databases are there that can fit the description i've outlined above?
Take a look at CouchDB. http://guide.couchdb.org/draft/why.html
It is a non-relational database, open-source, distributed (incremental, bidirectional replication), schema-free. Data is stored in documents formatted as JSON. It has robust persistence and is a distributed key value database.
Take a look at http://code.google.com/p/fastdht
It is a high performance distributed hash table based on Berkeley DB.

Haskell DB recommendations? [closed]

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 1 year ago.
Improve this question
There is a lot of databases, but I feel something different needed for Haskell. Like Erlang has it's own DB, Mnesia. Please recommend some good DBs for Haskell.
There are various frameworks for Haskell available, HDBC being the most popular.
HDBC is the database abstraction library, which allows you to use many popular databases, even Oracle or DB2. See Chapter 21. Using Databases in Real World Haskell.
I would advise you to choose the database depending on the type of data you want to store in it, rather than the language your system is implemented in.
Of course, this presupposes that bindings for the database exist in the language.
Since the question mentions Mnesia, I'll mention Haskell's equivalent: AcidState. It's a fast and flexible nosql database written in Haskell that has support for representation of native and user-defined Haskell types (that link shows you some quick how-tos, including implementing a hello-world blog).
There's more recent documentation on their wiki, and I've personally used it here in the implementation of a small web app.
If you're using Postgres I would recommend Opaleye. Disclaimer: I'm biased because I wrote it!

Looking for a cross platform small footprint database [closed]

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 8 years ago.
Improve this question
I have the following scenario. I need a db to store XML messages that have been created by a reader. I then want to use a transport (wcf) to read the db external to the populating app and send the messages to a central db Generally the db needs to run on mono, and windows.
I did look at sqlite3, and it seemed to fit all my requirements, but i'm reading its not so good on multi process access and t's moving away from my sweet spot, these last couple of days.
Thanks.
Have you considered just using XML to store the data? It doesn't get any more portable than that and will work fine as long your client-side storage needs are simple. E.g. not a large amount of many domain objects that need to be stored.
Additionally using an XML data store solves a lot of setup and installation headaches. You simply reference a file (or files) relative to your executable. You don't need to worry about installing db engines for a variety of platforms and then worry about upgrading.
WOuld it be feasible to give each process their own sqlite3 database? They all ultimately use the central database anyway, right?
Have a look at Firebird.
You can use it as an embedded engine just like SQLite, but it can scale to a full blown server as well.
The only drawback is, that the documentation is a mess

Simple, fast and reliable database (NoSQL) [closed]

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 6 years ago.
Improve this question
I'm looking for a solution to add persistence to my native-code application. It should be simple (no SQL), fast, and most-importantly reliable.
The best approach I can think of is using memory-mapped files. It's as simple and fast as it can get - you simply store the values in plain-data arrays in "memory". However, I don't think it's very reliable - a power failure could leave the database in an inconsistent or corrupted state. Being able to transactionally sync a group of memory-mapped files to disk would solve this, but I don't think it's possible. Also, unless the filesystem supports snapshots or COW cloning (e.g. Brtfs), backups would mean having to stop the application completely while the files are being copied.
Does anyone have better ideas?
Tokyo Cabinet
http://fallabs.com/tokyocabinet/
Berkeley DB
http://www.oracle.com/technetwork/database/berkeleydb/overview/index.html
Your list of requirements sounds like Redis. See http://redis.io/ for more.
Another possibility is Cassandra. See http://cassandra.apache.org/ for more on that.
RocksDB or levelDB are other great options.

Resources